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 }  
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