def post(self): data = UserRegister.parser.parse_args() regex = '^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$' if UserModel.find_by_user(data['username'], 'username'): return { 'status': 'failed', "message": "A user with that username already exists" }, 400 elif not re.search(regex, data['email']): return {'status': 'failed', "message": "Invalid Email"}, 400 elif data['password'] != data['passwordConfirm']: return {'status': 'failed', "message": " Password not match"}, 400 hashed = generate_password_hash(data['password'], method='sha256') time = datetime.now() user = UserModel( data['username'], data['email'], hashed, _id=UserModel.current_user() + 1, status="online", lastConnect=time.strftime('%Y-%m-%d %H:%M:%S'), picture= "https://firebasestorage.googleapis.com/v0/b/projectdoc-5af7b.appspot.com/o/template%2FArtboard%201.png?alt=media&token=b74d1752-21ae-4255-8d37-1440d1c967d5" ) print(user.json()) user.save_to_db() access_token = create_access_token(identity=user.userId, fresh=True, expires_delta=timedelta(hours=3)) refresh_token = create_refresh_token(user.userId) return make_response( { 'status': 'success', "data": { "userId": user.userId, "username": user.username, "permiss": user.permiss, "status": user.status, "picture": user.picture, "expires_token": time + timedelta(hours=3), "access_token": access_token, "refresh_token": refresh_token } }, 200)
def post(self): data = ForgetPassword.parser.parse_args() regex = '^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$' if re.search(regex, data['email']): user = UserModel.find_by_user(data['email'], 'email') else: return {"status": "failed", "message": "Invalid Email"}, 400 if user: token = create_access_token(identity=user.userId, fresh=True, expires_delta=timedelta(hours=4)) endpoint = f'http://localhost:80/lisa/user/resetPassword/?token={token}' SendEmail.send_reset_email(user, endpoint) return {'status': 'success', 'data': {'access_token': token}}, 200 else: return { "status": "failed", "message": "There is no account with this email. You must register first." }, 400
def post(self): data = UserLogin.parser.parse_args() if not data['username/email']: return { 'status': 'failed', "message": "Please Enter username/email" }, 400 elif not data['password']: return { 'status': 'failed', "message": "Please Enter password" }, 400 regex = '^(\w|\.|\_|\-)+[@](\w|\_|\-|\.)+[.]\w{2,3}$' if re.search(regex, data['username/email']): type = 'email' else: type = 'username' user = UserModel.find_by_user(data['username/email'], type) if user: if check_password_hash(user.password, data['password']): if user.status == "suspended": if user.lastConnect: if datetime.now() <= user.lastConnect: diff = timedelta( seconds=(user.lastConnect - datetime.now()).total_seconds()) t = str(diff).split(':') return { "status": "failed", "message": "Your account is suspended, remain time {} Hours {} Minutes {} Seconds" .format(t[0], t[1], int(float(t[2]))) }, 403 else: return { "status": "failed", "message": "Your account is suspended, please contact admin." }, 403 time = datetime.now() access_token = create_access_token( identity=user.userId, fresh=True, expires_delta=timedelta(hours=3)) refresh_token = create_refresh_token(user.userId) user.status = "online" user.lastConnect = time.strftime('%Y-%m-%d %H:%M:%S') #print(user.json()) user.update_to_db() return make_response( { 'status': 'success', "data": { "userId": user.userId, "username": user.username, "permission": user.permiss, "status": user.status, "picture": user.picture, "expires_token": time + timedelta(hours=3), "access_token": access_token, "refresh_token": refresh_token } }, 200) return {'status': 'failed', "message": "Password incorrect"}, 400 else: return {'status': 'failed', "message": "User does not exist"}, 400