Skip to content

Commit

Permalink
fix: Password changing for external users
Browse files Browse the repository at this point in the history
  • Loading branch information
worldbeater committed Mar 4, 2024
1 parent 150dbf3 commit 7df81eb
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions webapp/managers.py
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,6 @@ def get_submissions_statuses_by_info(

def count_submissions_by_info(self, group: int, variant: int, task: int) -> int:
registration = self.config.config.enable_registration

return self.checks.count_submissions_by_info(group, variant, task, registration)

def get_submissions_statuses(self, student: Student, skip: int, take: int) -> list[SubmissionDto]:
Expand Down Expand Up @@ -396,6 +395,9 @@ def register(self, email: str, password: str) -> str:
return "Данный адрес электронной почты заблокирован."
if self.confirmed(email):
return "Такой адрес почты уже зарегистрирован! Нажмите кнопку 'Войти'."
student = self.students.find_by_email(email)
if student and student.provider:
return "Воспользуйтесь кнопкой 'Сменить пароль', если хотите выполнить вход по паролю."
return (f"Пользователь не подтверждён! Отправьте пустое сообщение с Вашего адреса "
f"электронной почты {email} на наш адрес {self.config.config.imap_login} "
"для подтверждения. В течение 5 минут после отправки письма Ваш аккаунт "
Expand All @@ -416,7 +418,8 @@ def change_password(self, email: str, new_password: str) -> str:
return "Такой адрес почты не зарегистрирован!"
if self.blocked(email):
return "Данный адрес электронной почты заблокирован."
if not self.confirmed(email):
student = self.students.find_by_email(email)
if not self.confirmed(email) and not student.provider:
return (f"Пользователь не подтверждён! Отправьте пустое сообщение с Вашего адреса "
f"электронной почты {email} на наш адрес {self.config.config.imap_login} "
"для подтверждения. В течение 5 минут после отправки письма Ваш аккаунт "
Expand All @@ -434,6 +437,9 @@ def login(self, email: str, password: str) -> str | None:
if self.blocked(email):
return "Данный адрес электронной почты заблокирован."
if not self.confirmed(email):
student = self.students.find_by_email(email)
if student and student.provider:
return "Воспользуйтесь кнопкой 'Сменить пароль', если хотите выполнить вход по паролю."
return (f"Пользователь не подтверждён! Отправьте пустое сообщение с Вашего адреса "
f"электронной почты {email} на наш адрес {self.config.config.imap_login} "
"для подтверждения Вашего аккаунта. В течение 5 минут после отправки "
Expand All @@ -452,7 +458,7 @@ def check_password(self, email: str, password: str) -> Student | None:

def update_password(self, email: str, password: str) -> bool:
student = self.students.find_by_email(email)
if student and student.password_hash:
if student and (student.password_hash or student.provider):
given = password.encode('utf8')
hashed = bcrypt.hashpw(given, bcrypt.gensalt())
self.students.change_password(email, hashed.decode('utf8'))
Expand Down

0 comments on commit 7df81eb

Please sign in to comment.