コード例 #1
0
    def post(cls):
        json_data = request.get_json()
        print(type(json_data))

        user = UserModel.find_by_email(json_data['email'])
        if user:
            return {"Message": "User with this email is already register"}, 401

        # personal_info = {
        #     "username" : json_data["username"],
        #     "password" : json_data["password"],
        #     "email" : json_data["email"],
        #     "role": json_data["role"],
        #     "firstName": json_data["firstName"],
        #     "lastName": json_data["lastName"]
        # }

        try:
            user_data = UserSchema().load(json_data)
            print(user_data)
        except ValidationError as err:
            return err.messages, 401

        try:
            user_model = UserModel(**user_data)
            if user_model.role == "admin":
                user_model.isActivated = True
                user_model.insert_user()
            else:
                user_model.insert_user()
        except:
            return {"Message": "USER_INSERTION_ERROR"}, 401
        return {"Message": "USER_REGISTRATION_SUCCESSFUL"}, 201
コード例 #2
0
 def put(cls, deviceId):
     json_data = request.get_json()
     device_data = DeviceModel.find_by_id(deviceId)
     user_data = UserModel.find_by_email(device_data.assignTo)
     device_audit = DeviceAuditModel.find_my_device(deviceId, user_data.id)
     if device_data and device_audit:
         # device_data.isAvailable = True
         device_data.status = "available"
         device_data.assignTo = "0"
         device_data.releaseDate = None
         device_audit.deallocateBy = json_data['admin_id']
         device_audit.deallocateDate = str(
             date.today().strftime("%d/%m/%Y"))
         try:
             device_data.insert_device()
             device_audit.insert_device_audit()
             return {"Message": "DEVICE DE ALLOCATED"}, 201
         except:
             return {"Message": "INTERNAL SERVER ERROR"}, 401
     return {"MESSAGE": "INVALID REQUEST"}, 400
コード例 #3
0
    def post(cls):
        try:
            user_info = user_info_schema.load(request.get_json())
            if UserModel.find_by_username(user_info.get("username", None)):
                return {"message": get_text('user_username_exists')}, 409

            if UserModel.find_by_email(user_info.get("email", None)):
                return {"message": get_text('user_email_exists')}, 409

            hashed_password = generate_password_hash(user_info["password"])
            user_info["password"] = hashed_password

            new_user = UserModel(**user_info)
            user_id = new_user.save_to_db()
            confirmation = ConfirmationModel(user_id)
            confirmation.save_to_db()
            if user_id:
                token = confirmation.confirmation_id
                activation_link = f"{DOMAIN_NAME}/v1/user/activate?token={token}"
                try:
                    SendInBlue.send_activation_email(
                        name=new_user.name,
                        email=new_user.email,
                        activation_link=activation_link
                    )

                    return {"message": get_text('user_activation_email_sent')}, 200
                except SendInBlueError as err:
                    print(err)
                    new_user.delete_from_db()
                    confirmation.delete_from_db()
                    return {"message": get_text('user_registeration_error')}, 500

        except ValidationError as error:
            return {"message": get_text('input_error_generic'), "info": error.messages}, 400

        except Exception as ex:
            print(ex)
            confirmation.delete_from_db()
            new_user.delete_from_db()
            return {"message": get_text('server_error_generic')}, 500
コード例 #4
0
ファイル: User.py プロジェクト: hrool20/Followlife_backend
    def post():
        try:
            data = User.parser.parse_args()

            if UserModel.find_by_email(data['email']):
                return BaseResponse.bad_request_response(
                    'This email already exists.', {})
            elif UserModel.find_by_phone(data['phoneNumber']):
                return BaseResponse.bad_request_response(
                    'This phone number already exists.', {})

            hash_password = UserModel.hash_password(data['password'])
            user = UserModel(role_id=data['roleId'],
                             email=data['email'],
                             password=hash_password,
                             full_name=data['fullName'],
                             last_name=data['lastName'],
                             phone_number=data['phoneNumber'],
                             profile_picture=data['profilePicture'],
                             last_ip_connection=data['lastIPConnection'],
                             created_at=None,
                             updated_on=None,
                             status=None)

            user.save_to_db()

            if user.lastIPConnection and DeviceModel.find_by_ip(
                    user.lastIPConnection) is None:
                device = DeviceModel(
                    user_id=user.id,
                    ip=user.lastIPConnection,
                    created_at=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
                device.save_to_db()

            return BaseResponse.created_response('User created successfully.',
                                                 user.json(is_long=True))
        except Exception as e:
            return BaseResponse.server_error_response(str(e))
コード例 #5
0
    def post():
        try:
            data = Login.parser.parse_args()

            if data['email']:
                user = UserModel.find_by_email(data['email'])
            else:
                user = UserModel.find_by_phone(data['phoneNumber'])
                pass

            if data['lastIPConnection'] and DeviceModel.find_by_ip(data['lastIPConnection']) is None \
                    and user is not None:
                user.lastIPConnection = data['lastIPConnection'] if (data['lastIPConnection'] is not None) \
                    else user.lastIPConnection
                user.save_to_db()

                device = DeviceModel(
                    user_id=user.id,
                    ip=data['lastIPConnection'],
                    created_at=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
                device.save_to_db()

            if user and user.check_password(data['password']):
                access_token = create_access_token(
                    identity=user.json(is_long=False), fresh=True)
                refresh_token = create_refresh_token(identity=user.json(
                    is_long=False))
                return BaseResponse.ok_response(
                    'Login successfully.', {
                        'accessToken': access_token,
                        'refreshToken': refresh_token,
                        'user': user.json(is_long=False)
                    })
            return BaseResponse.bad_request_response('Incorrect credentials.',
                                                     {})
        except Exception as e:
            return BaseResponse.server_error_response(str(e))
コード例 #6
0
    def post(cls):
        json_data = request.get_json()
        email = json_data.get('email', None)

        if email is None:
            return {
                "message": get_text('reset_password_email_not_present')
            }, 400

        try:
            user = UserModel.find_by_email(email)

            # if there is user with that email,
            # check if the account is confirmed or not
            if user:
                confirmation = user.last_confirmation
                if confirmation:
                    # account not confirmed
                    if not confirmation.confirmed:
                        return {
                            "message":
                            get_text('reset_password_inactive_account')
                        }, 400

                    # the account is confirmed
                    # check if there is previous token
                    prev_pw_reset = user.password_reset.first()
                    if prev_pw_reset:
                        prev_pw_reset.delete_from_db()

                    # get new password reset hash
                    password_reset = PasswordResetModel(user._id)
                    password_reset.save_to_db()
                    token = password_reset.password_reset_id
                    pw_reset_link = f'{FRONTEND_DOMAIN_NAME}/reset_password?token={token}'

                    # Send email to user
                    SendInBlue.send_pw_reset_email(name=user.name,
                                                   email=user.email,
                                                   pw_reset_link=pw_reset_link)
                    return {
                        "message": get_text('reset_password_email_sent'),
                        "token": token
                    }, 200

                # there is no confirmation linked to user's account
                return {
                    "message": get_text('reset_password_inactive_account')
                }, 400

            return {"message": get_text('reset_password_user_not_found')}, 404

        except SendInBlueError as error:
            print(error)
            return {
                "message": get_text('reset_password_failed_to_send_email')
            }, 500

        except Exception as ex:
            print(ex)
            return {"message": get_text('server_error_generic')}, 500