File tree Expand file tree Collapse file tree 6 files changed +26
-5
lines changed Expand file tree Collapse file tree 6 files changed +26
-5
lines changed Original file line number Diff line number Diff line change @@ -87,6 +87,8 @@ admin_role::
87
87
+realm_access.roles+.
88
88
89
89
Example: ROLES/REDMINE/ADMIN
90
+ create_user_if_not_exists::
91
+ Whether to create a user account for an authenticated user who does not already have one.
90
92
91
93
92
94
== Mapping users
Original file line number Diff line number Diff line change @@ -82,11 +82,17 @@ def login_user
82
82
end
83
83
84
84
def create_user
85
- user = User . create ( @oidc_session . user_attributes )
86
- user . activate
87
- user . random_password
88
- user . last_login_on = Time . now
89
- user . save ? successful_login ( user ) : unsuccessful_login ( user )
85
+ if settings . create_user_if_not_exists
86
+ user = User . create ( @oidc_session . user_attributes )
87
+ user . activate
88
+ user . random_password
89
+ user . last_login_on = Time . now
90
+ user . save ? successful_login ( user ) : unsuccessful_login ( user )
91
+ else
92
+ user_id = @oidc_session . user_attributes [ :login ] || @oidc_session . user_attributes [ :oidc_identifier ]
93
+ logger . info "User #{ user_id } does not exist and creating new users by OIDC is disabled"
94
+ render 'lock_user' , :status => :unauthorized
95
+ end
90
96
end
91
97
92
98
def update_user ( user )
@@ -110,4 +116,7 @@ def unsuccessful_login(user)
110
116
end
111
117
end
112
118
119
+ def settings
120
+ @settings ||= RedmineOidc . settings
121
+ end
113
122
end
Original file line number Diff line number Diff line change 38
38
<%= label_tag 'settings[admin_role]' , l ( 'oidc.settings.admin_role' ) %>
39
39
<%= text_field_tag 'settings[admin_role]' , oidc_settings . admin_role , size : 60 %>
40
40
</ p >
41
+ < p >
42
+ <%= label_tag 'settings[create_user_if_not_exists]' , l ( 'oidc.settings.create_user_if_not_exists' ) %>
43
+ <%= check_box_tag 'settings[create_user_if_not_exists]' , 1 , oidc_settings . create_user_if_not_exists %>
44
+ </ p >
41
45
< p >
42
46
<%= label_tag 'settings[session_check_enabled]' , l ( 'oidc.settings.session_check_enabled' ) %>
43
47
<%= check_box_tag 'settings[session_check_enabled]' , 1 , oidc_settings . session_check_enabled %>
Original file line number Diff line number Diff line change 34
34
roles_claim_placeholder : roles
35
35
access_roles : Leerzeichen-separierte Liste der autorisierten Rollen
36
36
admin_role : Administrationsrolle
37
+ create_user_if_not_exists : Benutzer erstellen, falls nicht vorhanden
37
38
session_check_enabled : Session Check aktivieren
38
39
session_check_users_csv : Komma-separierte Liste der Logins mit Session Check (* = alle)
39
40
error :
Original file line number Diff line number Diff line change 34
34
roles_claim_placeholder : roles
35
35
access_roles : Space-separated list of authorized roles
36
36
admin_role : Administration role
37
+ create_user_if_not_exists : Create user if not exists
37
38
session_check_enabled : Enable session check
38
39
session_check_users_csv : Comma-separated list of logins with session check (* = all)
39
40
error :
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ class Settings
31
31
roles_claim
32
32
access_roles
33
33
admin_role
34
+ create_user_if_not_exists
34
35
session_check_enabled
35
36
session_check_users_csv
36
37
)
@@ -54,6 +55,9 @@ def current
54
55
settings_hash = ::Setting . plugin_redmine_oidc
55
56
settings_hash = settings_hash . reject { |k , _ | !VALID_KEYS . include? k . to_s }
56
57
58
+ # Mainly for backward compatibility.
59
+ settings_hash [ :create_user_if_not_exists ] = true if !settings_hash . key? ( :create_user_if_not_exists )
60
+
57
61
new ( settings_hash )
58
62
end
59
63
end
You can’t perform that action at this time.
0 commit comments