summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-03 14:02:58 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-09-03 14:02:58 +0300
commit7a0e1c7238033b33b7296701bfded56d4ad7f250 (patch)
treef1d901062e119ccf6a6e71a82c06c87ba5898f56 /app
parenta563065f3e956bd307e4c24cfbb810e0b0cff018 (diff)
parent40fc4261f2e6c8eaf6e885405863e929ecbd47b3 (diff)
downloadgitlab-ce-7a0e1c7238033b33b7296701bfded56d4ad7f250.tar.gz
Merge pull request #7533 from duk3luk3/system-hook-key-feature
Add system hook for ssh key changes
Diffstat (limited to 'app')
-rw-r--r--app/models/key.rb10
-rw-r--r--app/services/system_hooks_service.rb10
2 files changed, 20 insertions, 0 deletions
diff --git a/app/models/key.rb b/app/models/key.rb
index d59993b1905..095c73d8baf 100644
--- a/app/models/key.rb
+++ b/app/models/key.rb
@@ -29,7 +29,9 @@ class Key < ActiveRecord::Base
after_create :add_to_shell
after_create :notify_user
+ after_create :post_create_hook
after_destroy :remove_from_shell
+ after_destroy :post_destroy_hook
def strip_white_space
self.key = key.strip unless key.blank?
@@ -56,6 +58,10 @@ class Key < ActiveRecord::Base
NotificationService.new.new_key(self)
end
+ def post_create_hook
+ SystemHooksService.new.execute_hooks_for(self, :create)
+ end
+
def remove_from_shell
GitlabShellWorker.perform_async(
:remove_key,
@@ -64,6 +70,10 @@ class Key < ActiveRecord::Base
)
end
+ def post_destroy_hook
+ SystemHooksService.new.execute_hooks_for(self, :destroy)
+ end
+
private
def generate_fingerpint
diff --git a/app/services/system_hooks_service.rb b/app/services/system_hooks_service.rb
index 41014f199d5..bfc725e5eb5 100644
--- a/app/services/system_hooks_service.rb
+++ b/app/services/system_hooks_service.rb
@@ -22,6 +22,16 @@ class SystemHooksService
}
case model
+ when Key
+ data.merge!(
+ key: model.key,
+ id: model.id
+ )
+ if model.user
+ data.merge!(
+ username: model.user.username
+ )
+ end
when Project
owner = model.owner