File tree 1 file changed +29
-0
lines changed
lib/redmine_git_hosting/patches
1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -7,27 +7,56 @@ def self.included(base)
7
7
base . class_eval do
8
8
unloadable
9
9
10
+ attr_accessor :status_has_changed
11
+
10
12
has_many :gitolite_public_keys , :dependent => :destroy
11
13
12
14
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
13
19
end
14
20
end
15
21
16
22
17
23
module InstanceMethods
18
24
25
+
19
26
def gitolite_identifier
20
27
"#{ RedmineGitolite ::ConfigRedmine . get_setting ( :gitolite_identifier_prefix ) } #{ self . login . underscore } " . gsub ( /[^0-9a-zA-Z\- ]/ , '_' )
21
28
end
22
29
23
30
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
+
24
44
private
25
45
26
46
27
47
def delete_ssh_keys
28
48
RedmineGitolite ::GitHosting . logger . info { "User '#{ self . login } ' has been deleted from Redmine delete membership and SSH keys !" }
29
49
end
30
50
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
+
31
60
end
32
61
33
62
You can’t perform that action at this time.
0 commit comments