Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-12-05 03:10:01 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-12-05 03:10:01 +0300
commit8491ed6450acd080ce40a4af01c4c1c9241f62af (patch)
tree307bbd16f927090646fc906457c74047fbe0f461 /app
parent839dad17a14654ff31c6c7d4de0f00b90499dc23 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/helpers/admin/user_actions_helper.rb56
-rw-r--r--app/serializers/admin/user_entity.rb31
-rw-r--r--app/serializers/admin/user_serializer.rb7
3 files changed, 94 insertions, 0 deletions
diff --git a/app/helpers/admin/user_actions_helper.rb b/app/helpers/admin/user_actions_helper.rb
new file mode 100644
index 00000000000..cd520a75b44
--- /dev/null
+++ b/app/helpers/admin/user_actions_helper.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+module Admin
+ module UserActionsHelper
+ def admin_actions(user)
+ return [] if user.internal?
+
+ @actions ||= ['edit']
+
+ return @actions if user == current_user
+
+ @user ||= user
+
+ blocked_actions
+ deactivate_actions
+ unlock_actions
+ delete_actions
+
+ @actions
+ end
+
+ private
+
+ def blocked_actions
+ if @user.ldap_blocked?
+ @actions << 'ldap'
+ elsif @user.blocked? && @user.blocked_pending_approval?
+ @actions << 'approve'
+ @actions << 'reject'
+ elsif @user.blocked?
+ @actions << 'unblock'
+ else
+ @actions << 'block'
+ end
+ end
+
+ def deactivate_actions
+ if @user.can_be_deactivated?
+ @actions << 'deactivate'
+ elsif @user.deactivated?
+ @actions << 'activate'
+ end
+ end
+
+ def unlock_actions
+ @actions << 'unlock' if @user.access_locked?
+ end
+
+ def delete_actions
+ return unless can?(current_user, :destroy_user, @user) && !@user.blocked_pending_approval? && @user.can_be_removed?
+
+ @actions << 'delete'
+ @actions << 'delete_with_contributions'
+ end
+ end
+end
diff --git a/app/serializers/admin/user_entity.rb b/app/serializers/admin/user_entity.rb
new file mode 100644
index 00000000000..ad96c101822
--- /dev/null
+++ b/app/serializers/admin/user_entity.rb
@@ -0,0 +1,31 @@
+# frozen_string_literal: true
+
+module Admin
+ class UserEntity < API::Entities::UserSafe
+ include RequestAwareEntity
+ include UsersHelper
+ include UserActionsHelper
+
+ expose :created_at
+ expose :email
+ expose :last_activity_on
+ expose :avatar_url
+ expose :badges do |user|
+ user_badges_in_admin_section(user)
+ end
+
+ expose :projects_count do |user|
+ user.authorized_projects.length
+ end
+
+ expose :actions do |user|
+ admin_actions(user)
+ end
+
+ private
+
+ def current_user
+ options[:current_user]
+ end
+ end
+end
diff --git a/app/serializers/admin/user_serializer.rb b/app/serializers/admin/user_serializer.rb
new file mode 100644
index 00000000000..09036428bab
--- /dev/null
+++ b/app/serializers/admin/user_serializer.rb
@@ -0,0 +1,7 @@
+# frozen_string_literal: true
+
+module Admin
+ class UserSerializer < BaseSerializer
+ entity UserEntity
+ end
+end