diff options
Diffstat (limited to 'app/graphql/resolvers/users_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/users_resolver.rb | 20 |
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 |