models.py 文件源码

python
阅读 24 收藏 0 点赞 0 评论 0

项目:CodeGra.de 作者: CodeGra-de 项目源码 文件源码
def reset_password(self, token: str, new_password: str) -> None:
        """Reset a users password by using a token.

        .. note:: Don't forget to commit the database.

        :param token: A token as generated by :py:meth:`User.get_reset_token`.
        :param new_password: The new password to set.
        :returns: Nothing.

        :raises psef.auth.PermissionException: If something was wrong with the
            given token.
        """
        ts = URLSafeTimedSerializer(psef.app.config['SECRET_KEY'])
        try:
            username = ts.loads(
                token,
                max_age=psef.app.config['RESET_TOKEN_TIME'],
                salt=self.reset_token
            )
        except BadSignature:
            import traceback
            traceback.print_exc()
            raise psef.auth.PermissionException(
                'The given token is not valid',
                f'The given token {token} is not valid.',
                psef.errors.APICodes.INVALID_CREDENTIALS, 403
            )

        # This should never happen but better safe than sorry.
        if (username != self.username or
                self.reset_token is None):  # pragma: no cover
            raise psef.auth.PermissionException(
                'The given token is not valid for this user',
                f'The given token {token} is not valid for user "{self.id}".',
                psef.errors.APICodes.INVALID_CREDENTIALS, 403
            )

        self.password = new_password
        self.reset_token = None
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号