Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
    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)
Пример #6
0
    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)
Пример #7
0
    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)
Пример #9
0
    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)