def post(self): """Enroll a new user""" req_data = request.get_json() try: validated = validate_user(req_data) user_data = validated['data'] exist_user = [item for item in User.email_index.query(user_data['email'])] if not exist_user: new_user_id = uuid.uuid4().hex solution_put_new_user(new_user_id, user_data) user = { 'id': new_user_id, 'username': user_data['username'], 'email': user_data['email'] } app.logger.debug('success:user_signup: {0}'.format(user)) return make_response({'ok': True, 'users': user}, 201) else: app.logger.error('ERROR: Existed user: {0}'.format(user_data)) raise Conflict('ERROR: Existed user!') except ValidationError as e: app.logger.error('ERROR: {0}\n{1}'.format(e.message, req_data)) raise BadRequest(e.message) except PynamoDBException as e: app.logger.error('ERROR: {0}\n{1}'.format(e.msg, req_data)) raise InternalServerError(e.msg)
def post(self): """user signin""" req_data = request.get_json() try: signin_data = validate_user(req_data)['data'] db_user = solution_get_user_data_with_idx(signin_data) if db_user is None: raise BadRequest('Not existed user!') else: if check_password_hash(db_user.password, signin_data['password']): token_data = {'user_id': db_user.id, 'username':db_user.username, 'email':db_user.email} access_token = create_access_token(identity=token_data) refresh_token = create_refresh_token(identity=token_data) res = jsonify({'accessToken': access_token, 'refreshToken': refresh_token}) app.logger.debug('success:user signin:{}'.format(token_data)) return make_response(res, 200) else: app.logger.error('Password is mismatched or invalid user: {0}'.format(signin_data)) raise BadRequest('Password is mismatched or invalid user') except ValidationError as e: app.logger.error('ERROR: {0}\n{1}'.format(e.message, req_data)) raise BadRequest(e.message) except PynamoDBException as e: app.logger.error('ERROR: {0}\n{1}'.format(e.msg, req_data)) raise InternalServerError(e.msg)
def post(self): """user signin""" req_data = request.get_json() client = boto3.client('cognito-idp') try: signin_data = validate_user(req_data)['data'] access_token, refresh_token = cognito_signin(signin_data) res = jsonify({ 'accessToken': access_token, 'refreshToken': refresh_token }) app.logger.debug( 'success:user signin:access_token:{}, refresh_token:{}'.format( access_token, refresh_token)) return make_response(res, 200) except client.exceptions.NotAuthorizedException as e: app.logger.error( 'ERROR:user signin failed:password unmatched or invalid user: {0}' .format(signin_data)) app.logger.error(e) return err_response('password unmatched or invalid user', 400) except ValidationError as e: app.logger.error('ERROR:invalid data format:{0}'.format(req_data)) app.logger.error(e) return err_response(e, 400) except Exception as e: app.logger.error('ERROR:unexpected error:{0}'.format(req_data)) app.logger.error(e) return err_response('ERROR:unexpected error:{0}'.format(req_data), 500)
def post(self): """user signin""" req_data = request.get_json() client = boto3.client('cognito-idp') try: signin_data = validate_user(req_data)['data'] access_token, refresh_token = cognito_signin(client, signin_data) res = jsonify({ 'accessToken': access_token, 'refreshToken': refresh_token }) app.logger.debug( 'success:user signin:access_token:{}, refresh_token:{}'.format( access_token, refresh_token)) return make_response(res, 200) except client.exceptions.UserNotFoundException as e: app.logger.error('User does not exist: {0}'.format(signin_data)) app.logger.error(e) raise BadRequest('User does not exist') except client.exceptions.NotAuthorizedException as e: app.logger.error( 'Password is mismatched or invalid user: {0}'.format( signin_data)) app.logger.error(e) raise BadRequest('Password is mismatched or invalid user') except ValidationError as e: app.logger.error('Invalid data format: {0}'.format(req_data)) app.logger.error(e) raise BadRequest(e.message) except Exception as e: app.logger.error('Unexpected error: {0}'.format(req_data)) app.logger.error(e) raise InternalServerError('Unexpected error: {0}'.format(req_data))
def post(self): """Enroll a new user""" req_data = request.get_json() try: validated = validate_user(req_data) user_data = validated['data'] db_user = User.query.filter_by(email=user_data['email']).first() email = user_data['email'] if not db_user: user = User(username=user_data['username'], email=email, password=generate_password_hash( user_data['password'])) db.session.add(user) db.session.commit() return make_response({ 'ok': True, 'users': user.to_json() }, 201) else: raise BadRequest('ERROR: Existed user!') except ValidationError as e: app.logger.error('ERROR: {0}\n{1}'.format(e.message, req_data)) raise BadRequest(e.message)
def post(self): """Enroll a new user""" req_data = request.get_json() try: validated = validate_user(req_data) user_data = validated['data'] user = cognito_signup(user_data) app.logger.debug('success: enroll user into Cognito user pool:{}'.format(user)) return make_response({'ok': True, 'users': user}, 201) except ValidationError as e: app.logger.error('ERROR:invalid signup data format:{0}'.format(req_data)) app.logger.error(e) raise BadRequest(e.message)
def post(self): """user signin""" req_data = request.get_json() try: signin_data = validate_user(req_data)['data'] # TODO 2: Implement following solution code to get user profile with GSI db_user = solution_get_user_data_with_idx(signin_data) if db_user is None: return err_response('not exist email', 400) token_data = { 'user_id': db_user.id, 'username': db_user.username, 'email': db_user.email } if db_user is not None and check_password_hash( db_user.password, signin_data['password']): access_token = create_access_token(identity=token_data) refresh_token = create_refresh_token(identity=token_data) res = jsonify({ 'accessToken': access_token, 'refreshToken': refresh_token }) app.logger.debug('success:user signin:{}'.format(token_data)) return make_response(res, 200) else: app.logger.error( 'ERROR:user signin failed:password unmatched or invalid user: {0}' .format(signin_data)) return err_response('password unmatched or invalid user', 400) except ValidationError as e: app.logger.error('ERROR:invalid data format:{0}'.format(req_data)) app.logger.error(e) return err_response(e.message, 400) except Exception as e: app.logger.error('ERROR:unexpected error:{0}'.format(req_data)) app.logger.error(e) return err_response(e, 400)
def post(self): """Enroll a new user""" req_data = request.get_json() try: validated = validate_user(req_data) user_data = validated['data'] user = cognito_signup(user_data) app.logger.debug("success: enroll user into Cognito user pool:{}".format(user)) return m_response( user, 201) except ValidationError as e: app.logger.error('ERROR:invalid signup data format:{0}'.format(req_data)) app.logger.error(e) return err_response(e.message, 400) except Exception as e: app.logger.error('ERROR:unexpected signup error:{}'.format(req_data)) app.logger.error(e) return err_response(e, 500)
def post(self): """Enroll a new user""" req_data = request.get_json() try: validated = validate_user(req_data) user_data = validated['data'] exist_user = None email = user_data['email'] for item in User.email_index.query(email): exist_user = item if not exist_user: new_user_id = uuid.uuid4().hex # TODO 1 : Implement following solution code to save user information into DynamoDB solution_put_new_user(new_user_id, user_data) user = { "id": new_user_id, 'username': user_data['username'], 'email': email } app.logger.debug('success:user_signup: {0}'.format(user)) return m_response(user, 201) else: app.logger.error('ERROR:exist user: {0}'.format(user_data)) return err_response('exist user', 409) except ValidationError as e: app.logger.error( 'ERROR:invalid signup data format:{0}'.format(req_data)) app.logger.error(e) return err_response(e.message, 400) except Exception as e: app.logger.error( 'ERROR:unexpected signup error:{}'.format(req_data)) app.logger.error(e) return err_response(e, 500)