diff --git a/mo/users.py b/mo/users.py index 32c858ce08ac61166863fe801d3e3aacbb0ef0d5..f5fe5642bd3328ed36d899e84a7c8d10a1d71fcc 100644 --- a/mo/users.py +++ b/mo/users.py @@ -286,6 +286,7 @@ def expire_reg_requests(): def request_reset_password(user: db.User, client: str) -> Optional[db.RegRequest]: logger.info('Login: Požadavek na reset hesla pro <%s>', user.email) + assert not user.is_admin rr = new_reg_request(db.RegReqType.reset_passwd, client) if rr: db.get_session().add(rr) diff --git a/mo/web/acct.py b/mo/web/acct.py index 4cb0451f63ea30d3c32717519b10f3f343ce3f0f..214da32dc193bc510c6d837d8b60ca42dffcc1c9 100644 --- a/mo/web/acct.py +++ b/mo/web/acct.py @@ -61,13 +61,16 @@ def login(): app.logger.error('Login: Neznámý uživatel <%s>', email) flash('Neznámý uživatel', 'danger') elif form.reset.data: - rr = mo.users.request_reset_password(user, request.remote_addr) - if rr: - db.get_session().commit() - mo.email.send_password_reset_email(user, rr.email_token) - flash('Na uvedenou adresu byl odeslán e-mail s odkazem na obnovu hesla.', 'success') + if user.is_admin: + flash('Obnova hesla účtu správce není možná.', 'danger') else: - flash('Příliš časté požadavky na obnovu hesla.', 'danger') + rr = mo.users.request_reset_password(user, request.remote_addr) + if rr: + db.get_session().commit() + mo.email.send_password_reset_email(user, rr.email_token) + flash('Na uvedenou adresu byl odeslán e-mail s odkazem na obnovu hesla.', 'success') + else: + flash('Příliš časté požadavky na obnovu hesla.', 'danger') elif not form.passwd.data or not mo.users.check_password(user, form.passwd.data): app.logger.error('Login: Špatné heslo pro uživatele <%s>', email) flash('Chybné heslo', 'danger')