def password(self, value): """ Устанавливает пароль в зашифрованном виде @param value: Пароль в исходном виде """ # noinspection PyAttributeOutsideInit self.password_raw = md5(value)
def set_new_token(self) -> str: """ Генерирует новый токен для аккаунта и сохраняет его @return: Новый сгенерированный токен аккаунта """ # noinspection PyAttributeOutsideInit self.token = md5("%s%d" % (str(datetime.now()), random.choice(range(100)))) self.save() return self.token
def test_change_password(self): """ Сервис аутентификации позволяет менять пароль пользователя """ account = Account({"login": "******", "password": "******", "token": "12345678"}).save() self.assertRaises(IncorrectLogin, AuthentificationService().change_password, "weird_login") new_password = AuthentificationService().change_password("login") account.refresh() self.assertNotEqual("12345", account.password) self.assertEqual(md5(new_password), account.password)
def authentificate_by_credentials(cls, login, password) -> Account: """ Выполняет аутентификацию пользователя по переданным логину и паролю @param login: Логин @param password: Пароль @raise IncorrectLogin: Если не найдено соответствия по логину @raise IncorrectPassword: Если соответствие по логину найдено, но хеши паролей не совпадают @return: Аккаунт пользователя """ account_found = Accounts().get_item({"login": login}) if account_found: if account_found.password != md5(password): raise IncorrectPassword() return account_found else: raise IncorrectLogin()
def set_new_password(cls, account, current_password: str, new_password: str, new_password2: str) -> str: """ Меняет пароль аккаунта на новый @param account: Объект аккаунта пользователя @param current_password: Текущий пароль @param new_password: Новый пароль @param new_password2: Подтверждение нового пароля @return: Новый пароль """ if not account: raise IncorrectLogin() if account.password != md5(current_password): raise IncorrectPassword() if new_password != new_password2: raise NewPasswordsMismatch() account.password = new_password account.save() return True