Пример #1
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True, help='Email required!')
        parser.add_argument('password',
                            required=True,
                            help='Password required!')
        data = parser.parse_args()

        try:
            email = data['email']

            user = UserModel.get_first([UserModel.email == email])
            if user is None:
                return APIResponse.error_404("User not found!")

            if user.verified:
                if verify_hash(data['password'], user.password):
                    response = {
                        'access_token': create_access_token(identity=email),
                        'refresh_token': create_refresh_token(identity=email)
                    }
                    return APIResponse.success_200(response)
                else:
                    return APIResponse.error_400("Invalid password!")
            else:
                return APIResponse.error_403("User not verified!")

        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #2
0
    def put(self, id):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True, help='Email required!')
        parser.add_argument('password',
                            required=True,
                            help='Password required!')
        roles = ("Admin", "User")
        parser.add_argument('role',
                            choices=roles,
                            required=True,
                            help='Invalid role!')
        parser.add_argument('first_name')
        parser.add_argument('last_name')
        data = parser.parse_args()

        try:
            user = UserModel.get_first(
                [UserModel.id == id, UserModel.active == True])
            if user is None:
                return APIResponse.error_404()

            user.email = data['email']
            user.password = generate_hash(data['password'])
            user.role = UserRole.role(data['role'])
            user.first_name = data['first_name']
            user.last_name = data['last_name']
            user.save()

            result = UserSchema().dumps(user)

            response = json.loads(result)
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #3
0
 def post(self):
     jti = get_raw_jwt()['jti']
     try:
         revoked_token = RevokedTokenModel(jti=jti)
         revoked_token.add()
         response = {'message': 'Token revoked'}
         return APIResponse.success_204(response)
     except Exception as e:
         print(e)
         return APIResponse.error_500()
Пример #4
0
    def get(self):
        try:
            users = UserModel.get_all([UserModel.active == True])
            result = UserSchema().dumps(users, many=True)

            response = json.loads(result)
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #5
0
 def post(self):
     try:
         email = get_jwt_identity()
         response = {
             'access_token': create_access_token(identity=email),
             'refresh_token': create_refresh_token(identity=email)
         }
         return APIResponse.success_200(response)
     except Exception as e:
         print(e)
         return APIResponse.error_500()
Пример #6
0
    def delete(self, id):
        try:
            user = UserModel.get_first(
                [UserModel.id == id, UserModel.active == True])
            if user is None:
                return APIResponse.error_404()

            user.delete()
            response = {'message': 'Entity deleted'}
            return APIResponse.success_204(response)

        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #7
0
    def get(self, id):
        try:
            user = UserModel.get_first(
                [UserModel.id == id, UserModel.active == True])
            if user is None:
                return APIResponse.error_404()

            result = UserSchema().dumps(user)

            response = json.loads(result)
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #8
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True, help='Email required!')
        parser.add_argument('password',
                            required=True,
                            help='Password required!')
        roles = ("Admin", "User")
        parser.add_argument('role',
                            choices=roles,
                            required=True,
                            help='Invalid role!')
        parser.add_argument('first_name')
        parser.add_argument('last_name')
        data = parser.parse_args()

        try:
            user = UserModel.get_first([UserModel.email == data['email']])

            if user is not None:
                if user.verified:
                    return APIResponse.error_409("User already exist!")
            else:
                user = UserModel(email=data['email'])

            user.password = generate_hash(data['password'])
            user.role = UserRole.USER
            user.first_name = data['first_name']
            user.last_name = data['last_name']
            user.verified = False

            token = generate_confirmation_token(data['email'])
            payload = {
                'email': user.email,
                'first_name': user.first_name,
                'last_name': user.last_name,
                'service_name': app.config['SERVICE_NAME'],
                'host_name': app.config['HOST_NAME']
            }

            send_registration_email(payload, token)
            user.save()

            response = {'message': 'Email sent!'}
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #9
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('old_email',
                            required=True,
                            help='Old email required!')
        parser.add_argument('new_email',
                            required=True,
                            help='New email required!')
        data = parser.parse_args()

        try:
            user = UserModel.get_first([UserModel.email == data['old_email']])
            if user is None:
                return APIResponse.error_404("User not found")

            new_user = UserModel.get_first(
                [UserModel.email == data['new_email']])
            if new_user is not None:
                return APIResponse.error_409("Email already exist.")

            user.email = data['new_email']
            token = generate_confirmation_token(data['new_email'])
            payload = {
                'email': user.email,
                'first_name': user.first_name,
                'last_name': user.last_name,
                'service_name': app.config['SERVICE_NAME'],
                'host_name': app.config['HOST_NAME']
            }
            send_registration_email(payload, token)

            user.save()
            response = {'message': 'Email updated'}
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #10
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('email', required=True, help='Email required!')
        data = parser.parse_args()

        try:
            email = data['email']
            user = UserModel.get_first([UserModel.email == email])
            if user.verified:
                return APIResponse.error_404("User not found.")

            payload = {
                'email': user.email,
                'first_name': user.first_name,
                'last_name': user.last_name
            }
            token = generate_confirmation_token(email)
            send_registration_email(payload, token)

            response = {"message": "Email resent."}
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #11
0
    def post(self):
        parser = reqparse.RequestParser()
        parser.add_argument('token', required=True, help='Token required!')
        data = parser.parse_args()

        try:
            email = confirm_token(data['token'])

            if email is None:
                return APIResponse.error_404(
                    "The link has been expired or invalid.")

            user = UserModel.get_first([UserModel.email == email])
            if user.verified:
                return APIResponse.error_400("User already verified.")

            user.verified = True
            user.verified_at = datetime.utcnow()
            user.save()
            response = {"message": "User has been verified."}
            return APIResponse.success_200(response)
        except Exception as e:
            print(e)
            return APIResponse.error_500()
Пример #12
0
 def post(self):
     return APIResponse.error_403()