Skip to content

Commit a2401a3

Browse files
committed
Allow to disable user account creation
1 parent 0733640 commit a2401a3

File tree

6 files changed

+26
-5
lines changed

6 files changed

+26
-5
lines changed

README.rdoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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

app/controllers/oidc_controller.rb

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff 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
113122
end

app/views/settings/_redmine_oidc.html.erb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@
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 %>

config/locales/de.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ de:
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:

config/locales/en.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ en:
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:

lib/redmine_oidc/settings.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)