Beispiel #1
0
    def post(self):

        # get user data
        user = request.get_json()["user"]
        user_email = user.get("email")
        user_password = user.get("password")

        # find user by email
        userFound = UserModel.find_by_email(user_email)

        # compare passwords
        if userFound and custom_pbkdf2.verify(user_password,
                                              userFound.password):

            # create token
            access_token = create_access_token(identity=userFound.id,
                                               expires_delta=False,
                                               fresh=True)

            # create refresh token
            refresh_token = create_refresh_token(userFound.id)

            resp = make_response({
                "user": {
                    "id": userFound.id,
                    "username": userFound.username,
                    "email": userFound.email,
                }
            })
            set_access_cookies(resp, access_token)
            set_refresh_cookies(resp, refresh_token)

            return resp

        raise BadRequest("Invalid credentials")
Beispiel #2
0
    def post(cls):

        # get user data
        user_email = request.get_json()["userEmail"]

        # find user by email
        user = UserModel.find_by_email(user_email)

        if not user:
            raise NotFoundError()

        # get latest confirmation
        confirmation = user.most_recent_confirmation

        if confirmation:
            if confirmation.confirmed:
                return {"message": "Already confirmed"}, 400

            confirmation.force_to_expire()

        # create new confirmation
        new_confirmation = ConfirmationModel(user.id)
        new_confirmation.save_to_db()

        # send confirmation to email
        # user.send_confirmation_email()

        return {"message": "Confirmation email was sent"}, 200
Beispiel #3
0
    def post(cls):
        # get supplied email
        user_email = request.get_json()["email"]

        # find user
        userFound = UserModel.find_by_email(user_email)

        if userFound:

            # create recover_password_request
            password_recovery_request = PasswordRecoveryRequestModel(
                user_id=userFound.id)
            password_recovery_request.save_to_db()

            # link = request.host_url[:-1] + url_for(
            # "recover_password_request", confirmation_id=self.most_recent_confirmation.id
            # )

            # recover_password_request.send_email()

            # send email
            # userFound.send_notification_email(
            #     f"You new password is {new_password}")

            return {"message": password_recovery_request.id}, 200
        else:
            raise NotFoundError()
Beispiel #4
0
    def put(cls):

        # get user id
        user_id = get_jwt_identity()

        # get new email
        newemail = request.get_json()["email"]

        try:
            if UserModel.find_by_email(newemail):
                raise BadRequest("Email already exists")

            else:
                # save new email
                user = UserModel.find_by_id(user_id)
                user.email = newemail
                user.save_to_db()

                # send confirmation
                # confirmation = ConfirmationModel(user.id)
                # confirmation.save_to_db()
                # user.send_confirmation_email()

                return {"message": "Email updated", "email": newemail}, 200

        except:
            return {"message": "Error"}, 500
Beispiel #5
0
    def post(self):

        # create user model
        user_json = request.get_json().get("user")
        user = user_schema.load(user_json)

        # check email and userame
        if UserModel.find_by_username(user.username):
            raise BadRequest("A user with that username already exists")

        if UserModel.find_by_email(user.email):
            raise BadRequest("A user with that email already exists")

        # Hash the password
        hashed_pass = custom_pbkdf2.hash(user.password)
        user.password = hashed_pass

        # save user
        user.save_to_db()

        # create confirmation
        # confirmation = ConfirmationModel(user.id)
        # confirmation.save_to_db()
        # user.send_confirmation_email()

        # create token
        access_token = create_access_token(identity=user.id,
                                           expires_delta=False,
                                           fresh=True)

        # create refresh token
        refresh_token = create_refresh_token(user.id)

        return {
            "user": {
                "id": user.id,
                "username": user.username,
                "email": user.email,
                "access_token": access_token,
                "refresh_token": refresh_token,
            },
            "message": "User created!",
        }, 201
Beispiel #6
0
    def post(cls):
        user_json = request.get_json()["user"]

        user = user_schema.load(user_json)
        
        if UserModel.find_by_username(user.username):
            return {"message":"Username already exists"}, 400    

        if UserModel.find_by_email(user.email):
            return {"message":"Username already exists"}, 400

        hashed_password = custom_pbkdf2.hash(user.password)
        user.password = hashed_password

        user.save_to_db()

        user_setting = user_setting_schema.load({"user_id":user.id})
        user_setting.save_to_db()

        access_token = create_access_token(identity=user.id, fresh=True, expires_delta=False,user_claims={"company_id":user.company_id, "role":user.role_id})
        refresh_token = create_refresh_token(user.id)

        return {
            "message":"User Logged In",
            "user":{ 
                "user": {
                    user_schema.dump(user),
                    *{"profile_config":user_setting_schema.dump(user_setting)}

                } ,
                "userToken":{
                    "access_token":access_token,
                    "refresh_token":refresh_token,
                }
            },
        }