diff options
Diffstat (limited to 'app/services/issuable/callbacks/base.rb')
-rw-r--r-- | app/services/issuable/callbacks/base.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/services/issuable/callbacks/base.rb b/app/services/issuable/callbacks/base.rb new file mode 100644 index 00000000000..3fabce2c949 --- /dev/null +++ b/app/services/issuable/callbacks/base.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +module Issuable + module Callbacks + class Base + include Gitlab::Allowable + + def initialize(issuable:, current_user:, params:) + @issuable = issuable + @current_user = current_user + @params = params + end + + def after_initialize; end + def after_update_commit; end + def after_save_commit; end + + private + + attr_reader :issuable, :current_user, :params + + def excluded_in_new_type? + params.key?(:excluded_in_new_type) && params[:excluded_in_new_type] + end + + def has_permission?(permission) + can?(current_user, permission, issuable) + end + end + end +end |