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
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
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
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
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