Refactor admin user page
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
parent
b21390936a
commit
cc04c5b828
|
@ -1,5 +1,5 @@
|
|||
class Admin::UsersController < Admin::ApplicationController
|
||||
before_action :user, only: [:show, :edit, :update, :destroy]
|
||||
before_action :user, except: [:index, :new, :create]
|
||||
|
||||
def index
|
||||
@users = User.order_name_asc.filter(params[:filter])
|
||||
|
@ -9,8 +9,17 @@ class Admin::UsersController < Admin::ApplicationController
|
|||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def projects
|
||||
@personal_projects = user.personal_projects
|
||||
@joined_projects = user.projects.joined(@user)
|
||||
end
|
||||
|
||||
def groups
|
||||
end
|
||||
|
||||
def keys
|
||||
@keys = user.keys
|
||||
end
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
%h3.page-title
|
||||
Identities for
|
||||
= link_to @user.name, [:admin, @user]
|
||||
- page_title "Identities", @user.name, "Users"
|
||||
= render 'admin/users/head'
|
||||
|
||||
%hr
|
||||
- if @identities.present?
|
||||
%table.table
|
||||
%thead
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
%h3.page-title
|
||||
= @user.name
|
||||
- if @user.blocked?
|
||||
%span.cred (Blocked)
|
||||
- if @user.admin
|
||||
%span.cred (Admin)
|
||||
|
||||
.pull-right
|
||||
= link_to edit_admin_user_path(@user), class: "btn btn-grouped" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
|
||||
%ul.nav.nav-tabs
|
||||
= nav_link(path: 'users#show') do
|
||||
= link_to "Account", admin_user_path(@user)
|
||||
= nav_link(path: 'users#groups') do
|
||||
= link_to "Groups", groups_admin_user_path(@user)
|
||||
= nav_link(path: 'users#projects') do
|
||||
= link_to "Projects", projects_admin_user_path(@user)
|
||||
= nav_link(path: 'users#keys') do
|
||||
= link_to "SSH keys", keys_admin_user_path(@user)
|
||||
= nav_link(controller: :identities) do
|
||||
= link_to "Identities", admin_user_identities_path(@user)
|
|
@ -0,0 +1,19 @@
|
|||
- page_title "Groups", @user.name, "Users"
|
||||
= render 'admin/users/head'
|
||||
|
||||
- if @user.group_members.present?
|
||||
.panel.panel-default
|
||||
.panel-heading Groups:
|
||||
%ul.well-list
|
||||
- @user.group_members.each do |group_member|
|
||||
- group = group_member.group
|
||||
%li.group_member
|
||||
%span{class: ("list-item-name" unless group_member.owner?)}
|
||||
%strong= link_to group.name, admin_group_path(group)
|
||||
.pull-right
|
||||
%span.light= group_member.human_access
|
||||
- unless group_member.owner?
|
||||
= link_to group_group_member_path(group, group_member), data: { confirm: remove_user_from_group_message(group, group_member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from group' do
|
||||
%i.fa.fa-times.fa-inverse
|
||||
- else
|
||||
.nothing-here-block This user has no groups.
|
|
@ -0,0 +1,3 @@
|
|||
- page_title "Keys", @user.name, "Users"
|
||||
= render 'admin/users/head'
|
||||
= render 'profiles/keys/key_table', admin: true
|
|
@ -0,0 +1,43 @@
|
|||
- page_title "Projects", @user.name, "Users"
|
||||
= render 'admin/users/head'
|
||||
|
||||
- if @user.groups.any?
|
||||
.panel.panel-default
|
||||
.panel-heading Group projects
|
||||
%ul.well-list
|
||||
- @user.groups.each do |group|
|
||||
%li
|
||||
%strong= group.name
|
||||
– access to
|
||||
#{pluralize(group.projects.count, 'project')}
|
||||
|
||||
.row
|
||||
.col-md-6
|
||||
- if @personal_projects.present?
|
||||
= render 'users/projects', projects: @personal_projects
|
||||
- else
|
||||
.nothing-here-block This user has no personal projects.
|
||||
|
||||
|
||||
.col-md-6
|
||||
.panel.panel-default
|
||||
.panel-heading Joined projects (#{@joined_projects.count})
|
||||
%ul.well-list
|
||||
- @joined_projects.sort_by(&:name_with_namespace).each do |project|
|
||||
- member = project.team.find_member(@user.id)
|
||||
%li.project_member
|
||||
.list-item-name
|
||||
= link_to admin_namespace_project_path(project.namespace, project), class: dom_class(project) do
|
||||
= project.name_with_namespace
|
||||
|
||||
- if member
|
||||
.pull-right
|
||||
- if member.owner?
|
||||
%span.light Owner
|
||||
- else
|
||||
%span.light= member.human_access
|
||||
|
||||
- if member.respond_to? :project
|
||||
= link_to namespace_project_project_member_path(project.namespace, project, member), data: { confirm: remove_from_project_team_message(project, member) }, remote: true, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove user from project' do
|
||||
%i.fa.fa-times
|
||||
|
|
@ -1,35 +1,21 @@
|
|||
- page_title @user.name, "Users"
|
||||
%h3.page-title
|
||||
User:
|
||||
= @user.name
|
||||
- if @user.blocked?
|
||||
%span.cred (Blocked)
|
||||
- if @user.admin
|
||||
%span.cred (Admin)
|
||||
= render 'admin/users/head', page_name: 'Account'
|
||||
|
||||
.pull-right
|
||||
= link_to edit_admin_user_path(@user), class: "btn btn-grouped" do
|
||||
%i.fa.fa-pencil-square-o
|
||||
Edit
|
||||
%hr
|
||||
%ul.nav.nav-tabs
|
||||
%li.active
|
||||
%a{"data-toggle" => "tab", href: "#account"} Account
|
||||
%li
|
||||
%a{"data-toggle" => "tab", href: "#profile"} Profile
|
||||
%li
|
||||
%a{"data-toggle" => "tab", href: "#groups"} Groups
|
||||
%li
|
||||
%a{"data-toggle" => "tab", href: "#projects"} Projects
|
||||
%li
|
||||
%a{"data-toggle" => "tab", href: "#ssh-keys"} SSH keys
|
||||
%li
|
||||
= link_to "Identities", admin_user_identities_path(@user)
|
||||
|
||||
.tab-content
|
||||
#account.tab-pane.active
|
||||
.row
|
||||
.row
|
||||
.col-md-6
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
= @user.name
|
||||
%ul.well-list
|
||||
%li
|
||||
= image_tag avatar_icon(@user.email, 60), class: "avatar s60"
|
||||
%li
|
||||
%span.light Profile page:
|
||||
%strong
|
||||
= link_to user_path(@user) do
|
||||
= @user.username
|
||||
= render 'users/profile', user: @user
|
||||
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
Account:
|
||||
|
@ -158,77 +144,3 @@
|
|||
%strong #{@user.solo_owned_groups.map(&:name).join(', ')}
|
||||
%p
|
||||
You must transfer ownership or delete these groups before you can delete this user.
|
||||
|
||||
#profile.tab-pane
|
||||
.row
|
||||
.col-md-6
|
||||
.panel.panel-default
|
||||
.panel-heading
|
||||
= @user.name
|
||||
%ul.well-list
|
||||
%li
|
||||
= image_tag avatar_icon(@user.email, 60), class: "avatar s60"
|
||||
%li
|
||||
%span.light Profile page:
|
||||
%strong
|
||||
= link_to user_path(@user) do
|
||||
= @user.username
|
||||
.col-md-6
|
||||
= render 'users/profile', user: @user
|
||||
|
||||
#groups.tab-pane
|
||||
- if @user.group_members.present?
|
||||
.panel.panel-default
|
||||
.panel-heading Groups:
|
||||
%ul.well-list
|
||||
- @user.group_members.each do |group_member|
|
||||
- group = group_member.group
|
||||
%li.group_member
|
||||
%span{class: ("list-item-name" unless group_member.owner?)}
|
||||
%strong= link_to group.name, admin_group_path(group)
|
||||
.pull-right
|
||||
%span.light= group_member.human_access
|
||||
- unless group_member.owner?
|
||||
= link_to group_group_member_path(group, group_member), data: { confirm: remove_user_from_group_message(group, group_member) }, method: :delete, remote: true, class: "btn-xs btn btn-remove", title: 'Remove user from group' do
|
||||
%i.fa.fa-times.fa-inverse
|
||||
- else
|
||||
.nothing-here-block This user has no groups.
|
||||
|
||||
#projects.tab-pane
|
||||
- if @user.groups.any?
|
||||
.panel.panel-default
|
||||
.panel-heading Group projects
|
||||
%ul.well-list
|
||||
- @user.groups.each do |group|
|
||||
%li
|
||||
%strong= group.name
|
||||
– access to
|
||||
#{pluralize(group.projects.count, 'project')}
|
||||
|
||||
.row
|
||||
.col-md-6
|
||||
= render 'users/projects', projects: @personal_projects
|
||||
|
||||
.col-md-6
|
||||
.panel.panel-default
|
||||
.panel-heading Joined projects (#{@joined_projects.count})
|
||||
%ul.well-list
|
||||
- @joined_projects.sort_by(&:name_with_namespace).each do |project|
|
||||
- member = project.team.find_member(@user.id)
|
||||
%li.project_member
|
||||
.list-item-name
|
||||
= link_to admin_namespace_project_path(project.namespace, project), class: dom_class(project) do
|
||||
= project.name_with_namespace
|
||||
|
||||
- if member
|
||||
.pull-right
|
||||
- if member.owner?
|
||||
%span.light Owner
|
||||
- else
|
||||
%span.light= member.human_access
|
||||
|
||||
- if member.respond_to? :project
|
||||
= link_to namespace_project_project_member_path(project.namespace, project, member), data: { confirm: remove_from_project_team_message(project, member) }, remote: true, method: :delete, class: "btn-xs btn btn-remove", title: 'Remove user from project' do
|
||||
%i.fa.fa-times
|
||||
#ssh-keys.tab-pane
|
||||
= render 'profiles/keys/key_table', admin: true
|
||||
|
|
|
@ -152,6 +152,9 @@ Gitlab::Application.routes.draw do
|
|||
resources :identities, only: [:index, :edit, :update, :destroy]
|
||||
|
||||
member do
|
||||
get :projects
|
||||
get :keys
|
||||
get :groups
|
||||
put :team_update
|
||||
put :block
|
||||
put :unblock
|
||||
|
|
Loading…
Reference in New Issue