Skip to content

Commit daf6d8b

Browse files
author
root
committed
Update projects when locking/unlocking user
1 parent 962c6c9 commit daf6d8b

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

Diff for: lib/redmine_git_hosting/patches/user_patch.rb

+29
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,56 @@ def self.included(base)
77
base.class_eval do
88
unloadable
99

10+
attr_accessor :status_has_changed
11+
1012
has_many :gitolite_public_keys, :dependent => :destroy
1113

1214
before_destroy :delete_ssh_keys, prepend: true
15+
16+
after_save :check_if_status_changed
17+
18+
after_commit ->(obj) { obj.update_repositories }, on: :update
1319
end
1420
end
1521

1622

1723
module InstanceMethods
1824

25+
1926
def gitolite_identifier
2027
"#{RedmineGitolite::ConfigRedmine.get_setting(:gitolite_identifier_prefix)}#{self.login.underscore}".gsub(/[^0-9a-zA-Z\-]/, '_')
2128
end
2229

2330

31+
protected
32+
33+
34+
def update_repositories
35+
if status_has_changed
36+
git_projects = self.projects.uniq.select{|p| p.gitolite_repos.any?}.map{|project| project.id}
37+
38+
RedmineGitolite::GitHosting.logger.info { "User status has changed, update projects" }
39+
RedmineGitolite::GitHosting.resync_gitolite({ :command => :update_projects, :object => git_projects })
40+
end
41+
end
42+
43+
2444
private
2545

2646

2747
def delete_ssh_keys
2848
RedmineGitolite::GitHosting.logger.info { "User '#{self.login}' has been deleted from Redmine delete membership and SSH keys !" }
2949
end
3050

51+
52+
def check_if_status_changed
53+
if self.status_changed?
54+
self.status_has_changed = true
55+
else
56+
self.status_has_changed = false
57+
end
58+
end
59+
3160
end
3261

3362

0 commit comments

Comments
 (0)