コード例 #1
0
ファイル: auth.py プロジェクト: ssfdust/smorest-sfs
    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
コード例 #2
0
 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
         }
コード例 #3
0
    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}
コード例 #4
0
    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} >= {"默认用户组"}
            )
コード例 #5
0
ファイル: confirm.py プロジェクト: ssfdust/smorest-sfs
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
コード例 #6
0
    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"}
コード例 #7
0
def get_user(identity: str) -> User:
    return User.get_by_keyword(identity)
コード例 #8
0
ファイル: test_models.py プロジェクト: codacy-badger/yt-media
def test_get_by_unique(regular_user, key):
    user = User.get_by_keyword(key)
    assert user is regular_user
コード例 #9
0
ファイル: test_models.py プロジェクト: ssfdust/smorest-sfs
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