diff options
Diffstat (limited to 'app/policies/concerns')
-rw-r--r-- | app/policies/concerns/crud_policy_helpers.rb | 10 | ||||
-rw-r--r-- | app/policies/concerns/readonly_abilities.rb | 52 |
2 files changed, 60 insertions, 2 deletions
diff --git a/app/policies/concerns/crud_policy_helpers.rb b/app/policies/concerns/crud_policy_helpers.rb index d8521ca22cc..029c196cc5f 100644 --- a/app/policies/concerns/crud_policy_helpers.rb +++ b/app/policies/concerns/crud_policy_helpers.rb @@ -13,10 +13,16 @@ module CrudPolicyHelpers def create_update_admin_destroy(name) [ + *create_update_admin(name), + :"destroy_#{name}" + ] + end + + def create_update_admin(name) + [ :"create_#{name}", :"update_#{name}", - :"admin_#{name}", - :"destroy_#{name}" + :"admin_#{name}" ] end end diff --git a/app/policies/concerns/readonly_abilities.rb b/app/policies/concerns/readonly_abilities.rb new file mode 100644 index 00000000000..a267e963541 --- /dev/null +++ b/app/policies/concerns/readonly_abilities.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +module ReadonlyAbilities + extend ActiveSupport::Concern + + READONLY_ABILITIES = %i[ + admin_tag + push_code + push_to_delete_protected_branch + request_access + upload_file + resolve_note + create_merge_request_from + create_merge_request_in + award_emoji + ].freeze + + READONLY_FEATURES = %i[ + issue + list + merge_request + label + milestone + snippet + wiki + design + note + pipeline + pipeline_schedule + build + trigger + environment + deployment + commit_status + container_image + pages + cluster + release + ].freeze + + class_methods do + def readonly_abilities + READONLY_ABILITIES + end + + def readonly_features + READONLY_FEATURES + end + end +end + +ReadonlyAbilities::ClassMethods.prepend_if_ee('EE::ReadonlyAbilities::ClassMethods') |