- add_to_breadcrumbs "Users", admin_users_path - breadcrumb_title @user.name - page_title @user.name, "Users" = render 'admin/users/head' .row .col-md-6 .card .card-header = @user.name %ul.content-list %li = image_tag avatar_icon_for_user(@user, 60), class: "avatar s60" %li %span.light Profile page: %strong = link_to user_path(@user) do = @user.username = render 'admin/users/profile', user: @user .card .card-header Account: %ul.content-list %li %span.light Name: %strong= @user.name %li %span.light Username: %strong = @user.username %li %span.light Email: %strong = mail_to @user.email - @user.emails.each do |email| %li %span.light Secondary email: %strong= email.email = link_to remove_email_admin_user_path(@user, email), data: { confirm: "Are you sure you want to remove #{email.email}?" }, method: :delete, class: "btn-sm btn btn-remove float-right", title: 'Remove secondary email', id: "remove_email_#{email.id}" do %i.fa.fa-times %li %span.light ID: %strong = @user.id %li.two-factor-status %span.light Two-factor Authentication: %strong{ class: @user.two_factor_enabled? ? 'cgreen' : 'cred' } - if @user.two_factor_enabled? Enabled = link_to 'Disable', disable_two_factor_admin_user_path(@user), data: {confirm: 'Are you sure?'}, method: :patch, class: 'btn btn-sm btn-remove float-right', title: 'Disable Two-factor Authentication' - else Disabled %li %span.light External User: %strong = @user.external? ? "Yes" : "No" %li %span.light Can create groups: %strong = @user.can_create_group ? "Yes" : "No" %li %span.light Personal projects limit: %strong = @user.projects_limit %li %span.light Member since: %strong = @user.created_at.to_s(:medium) - if @user.confirmed_at %li %span.light Confirmed at: %strong = @user.confirmed_at.to_s(:medium) - else %li %span.light Confirmed: %strong.cred No %li %span.light Current sign-in IP: %strong - if @user.current_sign_in_ip = @user.current_sign_in_ip - else never %li %span.light Current sign-in at: %strong - if @user.current_sign_in_at = @user.current_sign_in_at.to_s(:medium) - else never %li %span.light Last sign-in IP: %strong - if @user.last_sign_in_ip = @user.last_sign_in_ip - else never %li %span.light Last sign-in at: %strong - if @user.last_sign_in_at = @user.last_sign_in_at.to_s(:medium) - else never %li %span.light Sign-in count: %strong = @user.sign_in_count %li %span.light= _("Highest role:") %strong = Gitlab::Access.human_access_with_none(@user.highest_role) - if @user.ldap_user? %li %span.light LDAP uid: %strong = @user.ldap_identity.extern_uid - if @user.created_by %li %span.light Created by: %strong = link_to @user.created_by.name, [:admin, @user.created_by] .col-md-6 - unless @user == current_user - unless @user.confirmed? .card.border-info .card-header.bg-info.text-white Confirm user .card-body - if @user.unconfirmed_email.present? - email = " (#{@user.unconfirmed_email})" %p This user has an unconfirmed email address#{email}. You may force a confirmation. %br = link_to 'Confirm user', confirm_admin_user_path(@user), method: :put, class: "btn btn-info", data: { confirm: 'Are you sure?' } - if @user.blocked? .card.border-info .card-header.bg-info.text-white This user is blocked .card-body %p A blocked user cannot: %ul %li Log in %li Access Git repositories %br = link_to 'Unblock user', unblock_admin_user_path(@user), method: :put, class: "btn btn-info", data: { confirm: 'Are you sure?' } - else .card.border-warning .card-header.bg-warning.text-white Block this user .card-body %p Blocking user has the following effects: %ul %li User will not be able to login %li User will not be able to access git repositories %li Personal projects will be left %li Owned groups will be left %br = link_to 'Block user', block_admin_user_path(@user), data: { confirm: 'USER WILL BE BLOCKED! Are you sure?' }, method: :put, class: "btn btn-warning" - if @user.access_locked? .card.border-info .card-header.bg-info.text-white This account has been locked .card-body %p This user has been temporarily locked due to excessive number of failed logins. You may manually unlock the account. %br = link_to 'Unlock user', unlock_admin_user_path(@user), method: :put, class: "btn btn-info", data: { confirm: 'Are you sure?' } .card.border-danger .card-header.bg-danger.text-white = s_('AdminUsers|Delete user') .card-body - if @user.can_be_removed? && can?(current_user, :destroy_user, @user) %p Deleting a user has the following effects: = render 'users/deletion_guidance', user: @user %br %button.delete-user-button.btn.btn-danger{ data: { toggle: 'modal', target: '#delete-user-modal', delete_user_url: admin_user_path(@user), block_user_url: block_admin_user_path(@user), username: @user.name, delete_contributions: false }, type: 'button' } = s_('AdminUsers|Delete user') - else - if @user.solo_owned_groups.present? %p This user is currently an owner in these groups: %strong= @user.solo_owned_groups.map(&:name).join(', ') %p You must transfer ownership or delete these groups before you can delete this user. - else %p You don't have access to delete this user. .card.border-danger .card-header.bg-danger.text-white = s_('AdminUsers|Delete user and contributions') .card-body - if can?(current_user, :destroy_user, @user) %p This option deletes the user and any contributions that would usually be moved to the = succeed "." do = link_to "system ghost user", help_page_path("user/profile/account/delete_account") As well as the user's personal projects, groups owned solely by the user, and projects in them, will also be removed. Commits to other projects are unaffected. %br %button.delete-user-button.btn.btn-danger{ data: { toggle: 'modal', target: '#delete-user-modal', delete_user_url: admin_user_path(@user, hard_delete: true), block_user_url: block_admin_user_path(@user), username: @user.name, delete_contributions: true }, type: 'button' } = s_('AdminUsers|Delete user and contributions') - else %p You don't have access to delete this user. #delete-user-modal