示例#1
0
 def post(self):
     _user_schema = UserSchema(only=(
         "email",
         "password",
     ))
     data = request.get_json()
     args = _user_schema.load(data)
     user = User.query.filter_by(email=args['email']).first()
     if user and user.password and user.check_pass(args['password']):
         if user.confirmation.activated:
             access_token = create_access_token(identity=user.id,
                                                fresh=True)
             refresh_token = create_refresh_token(identity=user.id)
             # encode jti token to store database redis
             access_jti = get_jti(encoded_token=access_token)
             refresh_jti = get_jti(encoded_token=refresh_token)
             # store to database redis
             conn_redis.set(access_jti, 'false', _ACCESS_EXPIRES)
             conn_redis.set(refresh_jti, 'false', _REFRESH_EXPIRES)
             return {
                 "access_token": access_token,
                 "refresh_token": refresh_token,
                 "username": user.username
             }, 200
         return {"message": "Check your email to activated user."}, 400
     return {"message": "Invalid credential"}, 422
示例#2
0
    def post(self):
        _user_schema = UserSchema(only=("email",))
        data = request.get_json()
        args = _user_schema.load(data)
        user = User.query.filter_by(email=args['email']).first()
        if not user:
            raise ValidationError({'email':["We can't find a user with that e-mail address."]})
        if not user.confirmation.activated:
            return {"message":"Please activated you're user first"}, 400

        password_reset = PasswordReset.query.filter_by(email=args['email']).first()
        if password_reset is None:
            try:
                reset = PasswordReset(args['email'])
                reset.save_to_db()
                reset.send_email_reset_password()
            except MailSmtpException as err:
                reset.delete_from_db()
                return {"error":str(err)}, 500
            return {"message":"We have e-mailed your password reset link!"}, 200

        if password_reset.resend_is_expired:
            try:
                password_reset.send_email_reset_password()
                password_reset.change_resend_expired()
                password_reset.save_to_db()
            except MailSmtpException as err:
                return {"error":str(err)}, 500
            return {"message":"We have e-mailed your password reset link!"}, 200

        return {"message":"You can try 5 minute later"}, 400
示例#3
0
 def get(self):
     _user_schema = UserSchema(only=("username", "email", "avatar",
                                     "password"))
     user = User.query.get(get_jwt_identity())
     data = _user_schema.dump(user)
     data['old_password'] = True if data['password'] else False
     data['admin'] = True if user.role == 2 else False
     data.pop('password', None)
     return data, 200
示例#4
0
 def put(self):
     _user_schema = UserSchema(only=("username", ))
     data = request.get_json()
     args = _user_schema.load(data)
     user = User.query.get(get_jwt_identity())
     # update in db
     user.username = args['username']
     user.change_update_time()
     user.save_to_db()
     return {"message": "Success update your account."}, 200
示例#5
0
    def post(self):
        _user_schema = UserSchema(only=("email",))
        data = request.get_json()
        args = _user_schema.load(data)
        user = User.query.filter_by(email=args['email']).first_or_404(description='Email not found.')
        if user.confirmation.activated:
            return {"message":"Your account already activated."}, 200

        if user.confirmation.resend_expired is None or user.confirmation.resend_is_expired:
            try:
                user.confirmation.send_email_confirm()
                user.confirmation.generate_resend_expired()
                user.confirmation.save_to_db()
                return {"message":"Email confirmation has send"}, 200
            except MailSmtpException as err:
                return {"error":str(err)}, 500
        return {"message":"You can try 5 minute later"}, 400