@@ -98,6 +98,7 @@ def __init__(self, tenant, mail, app):
98
98
self .ip_blacklist_duration = config .get ('ip_blacklist_duration' , 300 )
99
99
self .ip_blacklist_max_attempt_count = config .get ('ip_blacklist_max_attempt_count' , 10 )
100
100
self .force_password_change_first_login = config .get ('force_password_change_first_login' , False )
101
+ self .required_restore_input = config .get ('required_restore_input' , ['username' , 'email' ])
101
102
102
103
db_engine = DatabaseEngine ()
103
104
self .config_models = ConfigModels (
@@ -462,8 +463,12 @@ def new_password(self):
462
463
'new_password_contact_admin.html' , form = form , i18n = i18n ,
463
464
title = i18n .t ("auth.new_password_page_title" )
464
465
)
465
-
466
466
form = NewPasswordForm (meta = wft_locales ())
467
+ if 'username' not in self .required_restore_input :
468
+ form .user .validators = []
469
+ if 'email' not in self .required_restore_input :
470
+ form .email .validators = []
471
+
467
472
form .logo = self .login_logo
468
473
form .background = self .login_background
469
474
form .customstylesheet = self .customstylesheet
@@ -472,9 +477,18 @@ def new_password(self):
472
477
# create session for ConfigDB
473
478
with self .db_session () as db_session , db_session .begin ():
474
479
475
- entered_user = form .user .data
476
- user = self .find_user (db_session , email = form .email .data )
477
- if user and user .name == entered_user :
480
+ user_valid = False
481
+ if 'username' in self .required_restore_input and 'email' in self .required_restore_input :
482
+ user = self .find_user (db_session , email = form .email .data )
483
+ user_valid = user and user .name == form .user .data
484
+ elif 'username' in self .required_restore_input :
485
+ user = self .find_user (db_session , name = form .user .data )
486
+ user_valid = bool (user )
487
+ elif 'email' in self .required_restore_input :
488
+ user = self .find_user (db_session , email = form .email .data )
489
+ user_valid = bool (user )
490
+
491
+ if user_valid :
478
492
# generate and save reset token
479
493
user .reset_password_token = self .generate_token ()
480
494
@@ -489,7 +503,9 @@ def new_password(self):
489
503
flash (i18n .t ("auth.reset_mail_failed" ))
490
504
return render_template (
491
505
'new_password.html' , form = form , i18n = i18n ,
492
- title = i18n .t ("auth.new_password_page_title" )
506
+ title = i18n .t ("auth.new_password_page_title" ),
507
+ show_username = 'username' in self .required_restore_input ,
508
+ show_email = 'email' in self .required_restore_input
493
509
)
494
510
else :
495
511
self .logger .info ("User lookup failed" )
@@ -500,7 +516,9 @@ def new_password(self):
500
516
501
517
return render_template (
502
518
'new_password.html' , form = form , i18n = i18n ,
503
- title = i18n .t ("auth.new_password_page_title" )
519
+ title = i18n .t ("auth.new_password_page_title" ),
520
+ show_username = 'username' in self .required_restore_input ,
521
+ show_email = 'email' in self .required_restore_input
504
522
)
505
523
506
524
def edit_password (self , token , identity = None ):
0 commit comments