summaryrefslogtreecommitdiff
path: root/app/graphql/resolvers/users_resolver.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/resolvers/users_resolver.rb')
-rw-r--r--app/graphql/resolvers/users_resolver.rb20
1 files changed, 13 insertions, 7 deletions
diff --git a/app/graphql/resolvers/users_resolver.rb b/app/graphql/resolvers/users_resolver.rb
index a0ed076595d..95ced131504 100644
--- a/app/graphql/resolvers/users_resolver.rb
+++ b/app/graphql/resolvers/users_resolver.rb
@@ -9,13 +9,13 @@ module Resolvers
argument :ids, [GraphQL::ID_TYPE],
required: false,
- description: 'List of user Global IDs'
+ description: 'List of user Global IDs.'
argument :usernames, [GraphQL::STRING_TYPE], required: false,
- description: 'List of usernames'
+ description: 'List of usernames.'
argument :sort, Types::SortEnum,
- description: 'Sort users by this criteria',
+ description: 'Sort users by this criteria.',
required: false,
default_value: :created_desc
@@ -23,10 +23,15 @@ module Resolvers
required: false,
description: "Query to search users by name, username, or primary email."
- def resolve(ids: nil, usernames: nil, sort: nil, search: nil)
+ argument :admins, GraphQL::BOOLEAN_TYPE,
+ required: false,
+ default_value: false,
+ description: 'Return only admin users.'
+
+ def resolve(ids: nil, usernames: nil, sort: nil, search: nil, admins: nil)
authorize!
- ::UsersFinder.new(context[:current_user], finder_params(ids, usernames, sort, search)).execute
+ ::UsersFinder.new(context[:current_user], finder_params(ids, usernames, sort, search, admins)).execute
end
def ready?(**args)
@@ -34,7 +39,7 @@ module Resolvers
return super if args.values.compact.blank?
- if args.values.all?
+ if args[:usernames]&.present? && args[:ids]&.present?
raise Gitlab::Graphql::Errors::ArgumentError, 'Provide either a list of usernames or ids'
end
@@ -47,12 +52,13 @@ module Resolvers
private
- def finder_params(ids, usernames, sort, search)
+ def finder_params(ids, usernames, sort, search, admins)
params = {}
params[:sort] = sort if sort
params[:username] = usernames if usernames
params[:id] = parse_gids(ids) if ids
params[:search] = search if search
+ params[:admins] = admins if admins
params
end