Blame pagure/templates/user_settings.html

Pierre-Yves Chibon 68537a
{% extends "master.html" %}
Ryan Lerch 7eb66d
{% from "_formhelper.html" import render_bootstrap_field %}
Ryan Lerch 0c654b
{% from "_projectstring.html" import projectstring, projecticon %}
Pierre-Yves Chibon 68537a
Johan Cwiklinski 4327dd
{% block title %}{{ user.user }}'s settings{% endblock %}
Ryan Lerch f4adb4
{% set tag = "users"%}
Pierre-Yves Chibon 68537a
Pierre-Yves Chibon 012c11
{% macro render_email(email, form, validated=True) %}
Pierre-Yves Chibon 012c11
Ryan Lerch 6d2e06
    {{ email.email }}
Pierre-Yves Chibon 012c11
  {% if validated %}
Ryan Lerch 6d2e06
    
Pierre-Yves Chibon b130e5
        action="{{ url_for('ui_ns.remove_user_email') }}">
Ryan Lerch 7eb66d
      <input name="email" type="hidden" value="{{ email.email }}">
Ryan Lerch 7eb66d
      {{ form.csrf_token }}
Pierre-Yves Chibon 36de81
      
Pierre-Yves Chibon 36de81
        class="btn btn btn-outline-danger delete-email-btn">
Ryan Lerch 6d2e06
        
Ryan Lerch 7eb66d
      
Ryan Lerch 7eb66d
    
Ryan Lerch 7eb66d
    {% if email.email == user.default_email %}
Ryan Lerch 6d2e06
    
Ryan Lerch 6d2e06
      
Ryan Lerch 6d2e06
    
Ryan Lerch 7eb66d
    {% else %}
Pierre-Yves Chibon 3ff704
    
Pierre-Yves Chibon b130e5
      action="{{ url_for('ui_ns.set_default_email') }}" id="default_mail">
Ryan Lerch 7eb66d
      <input name="email" type="hidden" value="{{ email.email }}">
Ryan Lerch 7eb66d
      {{ form.csrf_token }}
Pierre-Yves Chibon 36de81
      
Pierre-Yves Chibon 36de81
         data-form-id="email" title="Set as default email address">
Ryan Lerch 6d2e06
         
Ryan Lerch 7eb66d
      
Ryan Lerch 7eb66d
    
Ryan Lerch 7eb66d
    {% endif %}
Pierre-Yves Chibon 67c275
  {% else %}
Ryan Lerch 6d2e06
    
Ryan Lerch 6d2e06
      <small>pending verification via email </small>
Pierre-Yves Chibon 3ff704
      
Pierre-Yves Chibon b130e5
        action="{{ url_for('ui_ns.reconfirm_email') }}" id="reconfirm_mail">
Pierre-Yves Chibon 012c11
        <input name="email" type="hidden" value="{{ email.email }}">
Pierre-Yves Chibon 012c11
        {{ form.csrf_token }}
Pierre-Yves Chibon 36de81
        
Pierre-Yves Chibon 36de81
          title="Resend validation email" class="btn btn btn-outline-primary submit-btn">
Ryan Lerch 6d2e06
          
Pierre-Yves Chibon 012c11
        
Pierre-Yves Chibon 012c11
      
Pierre-Yves Chibon 012c11
    
Pierre-Yves Chibon 67c275
  {% endif %}
Ryan Lerch 7eb66d
Pierre-Yves Chibon 8fea23
{% endmacro %}
Pierre-Yves Chibon 8fea23
Pierre-Yves Chibon 68537a
Pierre-Yves Chibon 68537a
{% block content %}
Ryan Lerch 7eb66d
Ryan Lerch 6d2e06
  
Ryan Lerch 6d2e06
    
Ryan Lerch 6d2e06
      <nav></nav>
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
          
User Settings
Ryan Lerch 6d2e06
          Profile
Ryan Lerch 6d2e06
          Email Addresses
Ryan Lerch 6d2e06
          API Keys
Ryan Lerch 6d2e06
          {% if config.get('LOCAL_SSH_KEY', True) %}
Ryan Lerch 6d2e06
            SSH Keys
Ryan Lerch 6d2e06
          {% endif %}
Ryan Lerch 6d2e06
          Preferences
Ryan Lerch 6d2e06
          Force Logout
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
      
Pierre-Yves Chibon b933a2
    
Ryan Lerch 6d2e06
    
Ryan Lerch 6d2e06
      
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
          

Ryan Lerch 6d2e06
            Basic Information
Ryan Lerch 6d2e06
            {% if config.get('PAGURE_AUTH')=='local' %}
Ryan Lerch 6d2e06
                Change password
Ryan Lerch 6d2e06
            {% endif %}
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
              <fieldset class="form-group text-center"></fieldset>
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                  
{{ g.fas_user.username | avatar(80) | safe }}
Ryan Lerch 6d2e06
                  
Ryan Lerch 6d2e06
                  Change Avatar 
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
              
Pierre-Yves Chibon b933a2
            
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
              <fieldset class="form-group"></fieldset>
Ryan Lerch 6d2e06
                <label for="description">Username</label>
Ryan Lerch 6d2e06
                <input class="form-control" disabled="" type="text" value="{{ user.user }}">
Ryan Lerch 6d2e06
              
Ryan Lerch 6d2e06
              <fieldset class="form-group"></fieldset>
Ryan Lerch 6d2e06
                <label for="description">Full Name</label>
Ryan Lerch 6d2e06
                <input class="form-control" disabled="" type="text" value="{{ user.fullname }}">
Ryan Lerch 6d2e06
              
Pierre-Yves Chibon b933a2
            
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
          

Ryan Lerch 6d2e06
            Email Addresses
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
              url_for('ui_ns.add_user_email') }}">
Ryan Lerch 6d2e06
                Add Email
Ryan Lerch 6d2e06
             
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
              
Ryan Lerch 6d2e06
                  {% for email in user.emails %}
Ryan Lerch 6d2e06
                    {{ render_email(email, form) }}
Ryan Lerch 6d2e06
                  {% endfor %}
Ryan Lerch 6d2e06
                  {% for email in user.emails_pending %}
Ryan Lerch 6d2e06
                    {{ render_email(email, form, validated=False) }}
Ryan Lerch 6d2e06
                  {% endfor %}
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
          

Ryan Lerch 6d2e06
            API Keys
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                  title="Generate a new API token">
Ryan Lerch 6d2e06
                  Create new API Key
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                      API keys are tokens used to authenticate you on pagure. They can also
Ryan Lerch 6d2e06
                      be used to grant access to 3rd party application to behave on all
Ryan Lerch 0c654b
                      {{projectstring(plural=True)}} in your name.
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                      These are your personal tokens; they are not visible to others.
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                      These keys are valid for 60 days.
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                      These keys are private, make sure to store in a safe place and
Ryan Lerch 6d2e06
                      do not share it.
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                  {% if user.tokens %}
Ryan Lerch 6d2e06
                  {% for token in user.tokens %}
Ryan Lerch 6d2e06
                    {% if not token.project %}
Ryan Lerch 6d2e06
                        
Ryan Lerch 6d2e06
                          
Ryan Lerch 8e5e77
                            
Ryan Lerch 8e5e77
                              
Ryan Lerch 8e5e77
                                
Ryan Lerch 8e5e77
                                {{ token.description or '' }}
Ryan Lerch 8e5e77
                              
Ryan Lerch 6d2e06
                            
Ryan Lerch 8e5e77
                            
Ryan Lerch 8e5e77
                              
Ryan Lerch 6d2e06
                              {% for acl in token.acls_list %}
Patrick Uiterwijk 9b237b
                                {% if acl == 'create_project' %}
Ryan Lerch 0c654b
                                  
Patrick Uiterwijk 9b237b
                                {% elif acl == 'fork_project' %}
Ryan Lerch 0c654b
                                
Patrick Uiterwijk 9b237b
                                {% elif acl == 'modify_project' %}
Ryan Lerch 0c654b
                                
Ryan Lerch 6d2e06
                                {% endif %}
Ryan Lerch 6d2e06
                              {% endfor %}
Ryan Lerch 8e5e77
                              
Ryan Lerch 6d2e06
                            
Pierre-Yves Chibon 3ff704
                            
Pierre-Yves Chibon 3ff704
                                type="text" value="{{ token.id }}" readonly>
Ryan Lerch 6d2e06
                            {% if token.expired %}
Ryan Lerch 8e5e77
                              
Ryan Lerch 8e5e77
                                <small class="font-weight-bold text-danger input-group-text">Expired on {{ token.expiration.date() }}</small>
Ryan Lerch 6d2e06
                              
Ryan Lerch 6d2e06
                            {% else %}
Ryan Lerch 8e5e77
                              
Ryan Lerch 8e5e77
                                <small class="font-weight-bold text-success input-group-text">Active until {{ token.expiration.date() }}</small>
Ryan Lerch 6d2e06
                              
Ryan Lerch 6d2e06
                            {% endif %}
Ryan Lerch 6d2e06
                            {% if not token.expired %}
Ryan Lerch 6d2e06
                            
Ryan Lerch 6d2e06
                                'ui_ns.revoke_api_user_token', token_id=token.id) }}"
Ryan Lerch 6d2e06
                              method="post" class="icon">
Pierre-Yves Chibon 36de81
                              
Ryan Lerch 6d2e06
                                  title="Revoke token">
Ryan Lerch 6d2e06
                                
Ryan Lerch 6d2e06
                              
Ryan Lerch 6d2e06
                              {{ form.csrf_token }}
Ryan Lerch 6d2e06
                            
Ryan Lerch 6d2e06
                            {% endif %}
Ryan Lerch 6d2e06
                          
Ryan Lerch 6d2e06
                        
Ryan Lerch 6d2e06
                    {% endif %}
Ryan Lerch 6d2e06
                  {% endfor %}
Ryan Lerch 6d2e06
                  {% endif %}
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
        
Pierre-Yves Chibon 170fc9
Ryan Lerch 6d2e06
        {% if config.get('LOCAL_SSH_KEY', True) %}
Ryan Lerch 6d2e06
        
Ryan Lerch 6d2e06
            

Ryan Lerch 6d2e06
              SSH Keys
Pierre-Yves Chibon 3ff704
              
Pierre-Yves Chibon 3f434c
              Add SSH key
Patrick Uiterwijk 9b237b
              
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
              
Patrick Uiterwijk 9b237b
                  

Below are your SSH keys.

Patrick Uiterwijk 9b237b
                  {% for key in user.sshkeys %}
Patrick Uiterwijk 9b237b
                    
Patrick Uiterwijk 9b237b
                      
Patrick Uiterwijk 9b237b
                        
Patrick Uiterwijk 9b237b
                          
Patrick Uiterwijk 9b237b
                        
Pierre-Yves Chibon 3ff704
                        
Patrick Uiterwijk 9b237b
                        type="text" value="{{ key.ssh_short_key }}"/>
Patrick Uiterwijk 9b237b
                      
Patrick Uiterwijk 9b237b
                        action="{{ url_for(
Patrick Uiterwijk 9b237b
                            'ui_ns.remove_user_sshkey',
Patrick Uiterwijk 9b237b
                            keyid=key.id) }}">
Pierre-Yves Chibon 36de81
                        
Pierre-Yves Chibon 36de81
                          class="btn btn-outline-danger delete-sshkey-btn">
Patrick Uiterwijk 9b237b
                          
Patrick Uiterwijk 9b237b
                        
Patrick Uiterwijk 9b237b
                        {{ form.csrf_token }}
Patrick Uiterwijk 9b237b
                      
Patrick Uiterwijk 9b237b
                      
Patrick Uiterwijk 9b237b
                    
Patrick Uiterwijk 9b237b
                  {% endfor %}
Pierre-Yves Chibon 170fc9
              
Pierre-Yves Chibon 170fc9
            
Pierre-Yves Chibon 3f434c
Pierre-Yves Chibon 3ff704
          
Pierre-Yves Chibon 3f434c
            
Pierre-Yves Chibon 3f434c
              
Pierre-Yves Chibon 3f434c
                
Pierre-Yves Chibon 3f434c
                  Add SSH key
Pierre-Yves Chibon 3f434c
                
Pierre-Yves Chibon 3f434c
                
Pierre-Yves Chibon 3f434c
                  <form action="{{ url_for('ui_ns.add_user_sshkey') }}" method="post"></form>
Pierre-Yves Chibon 3f434c
                    <fieldset class="form-group"></fieldset>
Pierre-Yves Chibon 3f434c
                      <label for="ssh_key">SSH key</label>
Pierre-Yves Chibon 3f434c
                      <textarea class="form-control" id="ssh_key" name="ssh_key"></textarea>
Pierre-Yves Chibon 3f434c
                    
Pierre-Yves Chibon 3f434c
                    

Pierre-Yves Chibon 3f434c
                      <input class="btn btn-secondary ssh_key_btn" type="button" value="Cancel">
Pierre-Yves Chibon 3f434c
                      <input class="btn btn-primary" type="submit" value="Add">
Pierre-Yves Chibon 3f434c
                      {{ form.csrf_token }}
Pierre-Yves Chibon 3f434c
                    

Pierre-Yves Chibon 3f434c
                  
Pierre-Yves Chibon 3f434c
                
Pierre-Yves Chibon 3f434c
              
Pierre-Yves Chibon 3f434c
            
Pierre-Yves Chibon 3f434c
          
Pierre-Yves Chibon 3f434c
Ryan Lerch 6d2e06
          
Pierre-Yves Chibon 170fc9
          {% endif %}
Ryan Lerch 6d2e06
Ryan Lerch 6d2e06
          
Ryan Lerch 6d2e06
              

Ryan Lerch 6d2e06
                User Settings
Ryan Lerch 6d2e06
              
Ryan Lerch 6d2e06
              
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                  <form action="{{ url_for('ui_ns.update_user_settings') }}" method="post"></form>
Ryan Lerch 6d2e06
                    
Ryan Lerch 6d2e06
                      {% for key in user.settings | sort %}
Ryan Lerch 6d2e06
                          {% if user.settings[key] in [True, False, 'y'] %}
Ryan Lerch 6d2e06
                          
Ryan Lerch 6d2e06
                            <label class="custom-input custom-checkbox"></label>
Ryan Lerch 6d2e06
                              
Ryan Lerch 6d2e06
                                      if user.settings[key] -%}checked=""{%- endif -%}/>
Ryan Lerch 6d2e06
                              
Ryan Lerch 6d2e06
                              Activate {{ key | replace('_', ' ') }}
Ryan Lerch 6d2e06
                            
Ryan Lerch 6d2e06
                          
Ryan Lerch 6d2e06
                        {% else %}
Ryan Lerch 6d2e06
                          
Ryan Lerch 6d2e06
                            <label for="{{ key }}">Activate {{ key | replace('_', ' ') }} :</label>
Ryan Lerch 6d2e06
                            
Ryan Lerch 6d2e06
                              if user.settings[key] %}value="{{ user.settings[key] }}"{%
Ryan Lerch 6d2e06
                              endif %} name="{{ key }}" />
Ryan Lerch 6d2e06
                          
Ryan Lerch 6d2e06
                        {% endif %}
Ryan Lerch 6d2e06
                    {% endfor %}
Ryan Lerch 6d2e06
                    
Ryan Lerch 6d2e06
                    

Ryan Lerch 6d2e06
                        <input class="btn btn-primary" type="submit" value="Update">
Ryan Lerch 6d2e06
                        {{ form.csrf_token }}
Ryan Lerch 6d2e06
                      

Ryan Lerch 6d2e06
                    
Pierre-Yves Chibon 170fc9
                
Pierre-Yves Chibon 170fc9
              
Pierre-Yves Chibon 170fc9
            
Pierre-Yves Chibon 170fc9
Ryan Lerch 6d2e06
            
Ryan Lerch 6d2e06
                

Ryan Lerch 6d2e06
                  Force Logout
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
                  
Ryan Lerch 6d2e06
                      

Ryan Lerch 6d2e06
                          Forcefully log out from every current open session.
Ryan Lerch 6d2e06
                      

Slavek Kabrda 2200ff
                      <form action="{{ url_for('ui_ns.force_logout') }}" method="post"></form>
Slavek Kabrda 2200ff
                        
Slavek Kabrda 2200ff
                         value="Log out all currently active sessions">
Slavek Kabrda 2200ff
                        {{ form.csrf_token }}
Slavek Kabrda 2200ff
                      
Ryan Lerch 6d2e06
                  
Ryan Lerch 6d2e06
                
Ryan Lerch 6d2e06
              
Patrick Uiterwijk ce6d6d
Patrick Uiterwijk ce6d6d
      
Patrick Uiterwijk ce6d6d
    
Patrick Uiterwijk ce6d6d
  
Ryan Lerch 7eb66d
Ryan Lerch 6d2e06
{% endblock %}
Ryan Lerch 6d2e06
Ryan Lerch 6d2e06
Ryan Lerch 6d2e06
{% block jscripts %}
Ryan Lerch 6d2e06
{{ super() }}
Pierre-Yves Chibon 7694ed
<script nonce="{{ g.nonce }}" type="text/javascript"></script>
Ryan Lerch 6d2e06
  $(document).ready(function() {
Pierre-Yves Chibon 36de81
    $('.submit-btn').click(function() {
Pierre-Yves Chibon 36de81
      var _form_name = $(this).attr('data-form-id');
Pierre-Yves Chibon 36de81
        $('#' + _form-id).submit();
Pierre-Yves Chibon 36de81
    });
Pierre-Yves Chibon 36de81
    $('.remove-token-btn').click(function() {
Pierre-Yves Chibon 36de81
      return confirm('Are you sure to revoke this token ?'
Pierre-Yves Chibon 36de81
                     + '\nThis will break all application using it and '
Pierre-Yves Chibon 36de81
                     + 'cannot be un-done.');
Pierre-Yves Chibon 36de81
    })
Pierre-Yves Chibon 36de81
    $('.delete-email-btn').click(function() {
Pierre-Yves Chibon 36de81
      return confirm('Do you really want to remove the email: ' + $(this).attr('data-email') + '?');
Pierre-Yves Chibon 36de81
    })
Pierre-Yves Chibon 36de81
    $('.delete-sshkey-btn').click(function() {
Pierre-Yves Chibon 36de81
      return confirm('You sure you want to remove this SSH key?');
Pierre-Yves Chibon 36de81
    })
Pierre-Yves Chibon 36de81
Ryan Lerch 6d2e06
    $('#nav-tab a.nav-link').on('shown.bs.tab', function (e) {
Ryan Lerch 6d2e06
      window.location.hash = e.target.hash+'-tab';
Ryan Lerch 6d2e06
      window.scrollTo(0,0);
Ryan Lerch 6d2e06
    });
Ryan Lerch 6d2e06
Ryan Lerch 6d2e06
    if (!window.location.hash){
Ryan Lerch 6d2e06
      window.location.hash = "#nav-basic-tab"
Ryan Lerch 6d2e06
    }
farhaanbukhsh 4886b4
Ryan Lerch 6d2e06
    window.onhashchange = function () {
Ryan Lerch 6d2e06
      $(window.location.hash).tab('show');
Ryan Lerch 6d2e06
    }
Pierre-Yves Chibon 36de81
    const _anchor = window.location.hash;
Pierre-Yves Chibon 36de81
    console.log(_anchor);
Pierre-Yves Chibon 36de81
    $(_anchor).tab('show');
Ryan Lerch 6d2e06
    window.scrollTo(0,0);
Pierre-Yves Chibon 3f434c
Pierre-Yves Chibon 3f434c
    $(".ssh_key_btn").click(function() {
Pierre-Yves Chibon 3f434c
      $(".ssh_key_block").toggle();
Pierre-Yves Chibon 3f434c
    });
Ryan Lerch 6d2e06
  });
Ryan Lerch 6d2e06
Pierre-Yves Chibon 68537a
{% endblock %}