def _check_user(self) -> bool: self.user = User.get_by_keyword(self.email) if self.user.active is not True: logger.warning(f"{self.user.email} 未激活,尝试登录") abort(403, message="用户未激活") return True
def test_register(self): with self.flask_app.test_request_context(): data = self._get_data( username="******", email="*****@*****.**", phonenum="1234" ) url = url_for("User.UserRegisterView") resp = self.flask_app_client.put(url, json=data) fake_user = User.get_by_keyword("fake_user") assert resp.status_code == 200 and {r.name for r in fake_user.roles} == { ROLES.User }
def post( self, args: Dict[str, str] ) -> Dict[str, Union[int, str, Dict[str, Dict[str, str]]]]: """ 用户登录 用户名密码登录后,返回基本信息以及token, 登录方式为token方式 """ user = User.get_by_keyword(args["email"]) with UserLoginChecker(user, args["password"], args["captcha"], args["token"]).check() as user: data = login_user(user) return {"code": 0, "msg": "success", "data": data}
def test_register(self) -> None: from smorest_sfs.modules.users.models import User with self.flask_app.test_request_context(): data = self._get_data( username="******", email="*****@*****.**", phonenum="1234" ) url = url_for("User.UserRegisterView") resp = self.flask_app_client.put(url, json=data) fake_user = User.get_by_keyword("fake_user") assert ( resp.status_code == 200 and {r.name for r in fake_user.roles} >= {"a", "User"} and {g.name for g in fake_user.groups} >= {"默认用户组"} )
def confirm_current_token(token_type: str, revoked: bool = True) -> User: """ 验证token :param jti: str jti字符串 :param token_type: str token类型 :param revoked 是否撤销token :return (state, user) """ try: jti = get_raw_jwt()["jti"] token = TokenBlackList.where(jti=jti, token_type=token_type).one() token.update(revoked=revoked) user = User.get_by_keyword(token.user_identity) except NoResultFound: abort(403, message="token无效") return user
def post(self, email: str) -> Dict[str, Union[str, int]]: """ 忘记密码 发送忘记密码邮件到请求的email """ user = User.get_by_keyword(email) if not user: abort(404, message="用户不存在") logger.info(f"{user.email}发起了忘记密码申请") token = generate_confirm_token(user, "passwd") url = url_for("Auth.ResetForgotPasswordView", token=token, _external=True) sender = PasswdMailSender(to=user.email, content={ "url": url, "message": "找回密码" }) sender.send() return {"code": 0, "msg": "success"}
def get_user(identity: str) -> User: return User.get_by_keyword(identity)
def test_get_by_unique(regular_user, key): user = User.get_by_keyword(key) assert user is regular_user
def test_get_by_unique(regular_user: "******", key: str) -> None: from smorest_sfs.modules.users.models import User user = User.get_by_keyword(key) assert user is regular_user