summaryrefslogtreecommitdiff
path: root/app/graphql/types/base_enum.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/graphql/types/base_enum.rb')
-rw-r--r--app/graphql/types/base_enum.rb27
1 files changed, 25 insertions, 2 deletions
diff --git a/app/graphql/types/base_enum.rb b/app/graphql/types/base_enum.rb
index 4d470aceca4..518a902a5d7 100644
--- a/app/graphql/types/base_enum.rb
+++ b/app/graphql/types/base_enum.rb
@@ -21,12 +21,23 @@ module Types
graphql_name(enum_mod.name) if use_name
description(enum_mod.description) if use_description
- enum_mod.definition.each { |key, content| value(key.to_s.upcase, **content) }
+ enum_mod.definition.each do |key, content|
+ value(key.to_s.upcase, **content)
+ end
+ end
+
+ # Helper to define an enum member for each element of a Rails AR enum
+ def from_rails_enum(enum, description:)
+ enum.each_key do |name|
+ value name.to_s.upcase,
+ value: name,
+ description: format(description, name: name)
+ end
end
def value(*args, **kwargs, &block)
enum[args[0].downcase] = kwargs[:value] || args[0]
- kwargs = gitlab_deprecation(kwargs)
+ gitlab_deprecation(kwargs)
super(*args, **kwargs, &block)
end
@@ -36,6 +47,18 @@ module Types
def enum
@enum_values ||= {}.with_indifferent_access
end
+
+ def authorization
+ @authorization ||= ::Gitlab::Graphql::Authorize::ObjectAuthorization.new(authorize)
+ end
+
+ def authorize(*abilities)
+ @abilities = abilities
+ end
+
+ def authorized?(object, context)
+ authorization.ok?(object, context[:current_user])
+ end
end
end
end