diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-05 03:10:01 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-12-05 03:10:01 +0300 |
commit | 8491ed6450acd080ce40a4af01c4c1c9241f62af (patch) | |
tree | 307bbd16f927090646fc906457c74047fbe0f461 /app | |
parent | 839dad17a14654ff31c6c7d4de0f00b90499dc23 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r-- | app/helpers/admin/user_actions_helper.rb | 56 | ||||
-rw-r--r-- | app/serializers/admin/user_entity.rb | 31 | ||||
-rw-r--r-- | app/serializers/admin/user_serializer.rb | 7 |
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 |