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::
8787 +realm_access.roles+.
8888
8989 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.
9092
9193
9294== Mapping users
Original file line number Diff line number Diff line change @@ -82,11 +82,17 @@ def login_user
8282 end
8383
8484 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
9096 end
9197
9298 def update_user ( user )
@@ -110,4 +116,7 @@ def unsuccessful_login(user)
110116 end
111117 end
112118
119+ def settings
120+ @settings ||= RedmineOidc . settings
121+ end
113122end
Original file line number Diff line number Diff line change 3838 <%= label_tag 'settings[admin_role]' , l ( 'oidc.settings.admin_role' ) %>
3939 <%= text_field_tag 'settings[admin_role]' , oidc_settings . admin_role , size : 60 %>
4040</ 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 >
4145< p >
4246 <%= label_tag 'settings[session_check_enabled]' , l ( 'oidc.settings.session_check_enabled' ) %>
4347 <%= check_box_tag 'settings[session_check_enabled]' , 1 , oidc_settings . session_check_enabled %>
Original file line number Diff line number Diff line change 3434 roles_claim_placeholder : roles
3535 access_roles : Leerzeichen-separierte Liste der autorisierten Rollen
3636 admin_role : Administrationsrolle
37+ create_user_if_not_exists : Benutzer erstellen, falls nicht vorhanden
3738 session_check_enabled : Session Check aktivieren
3839 session_check_users_csv : Komma-separierte Liste der Logins mit Session Check (* = alle)
3940 error :
Original file line number Diff line number Diff line change 3434 roles_claim_placeholder : roles
3535 access_roles : Space-separated list of authorized roles
3636 admin_role : Administration role
37+ create_user_if_not_exists : Create user if not exists
3738 session_check_enabled : Enable session check
3839 session_check_users_csv : Comma-separated list of logins with session check (* = all)
3940 error :
Original file line number Diff line number Diff line change @@ -31,6 +31,7 @@ class Settings
3131 roles_claim
3232 access_roles
3333 admin_role
34+ create_user_if_not_exists
3435 session_check_enabled
3536 session_check_users_csv
3637 )
@@ -54,6 +55,9 @@ def current
5455 settings_hash = ::Setting . plugin_redmine_oidc
5556 settings_hash = settings_hash . reject { |k , _ | !VALID_KEYS . include? k . to_s }
5657
58+ # Mainly for backward compatibility.
59+ settings_hash [ :create_user_if_not_exists ] = true if !settings_hash . key? ( :create_user_if_not_exists )
60+
5761 new ( settings_hash )
5862 end
5963 end
You can’t perform that action at this time.
0 commit comments