Exemple #1
0
    def create_user(self, validated, jwt_token, role):
        """
        Create a account user according in jwt_token's `account_id`.
            if email address already exist raise httpconflict error.
            if we don't have conflict, user created given parameters(email, password, role, account_id, first_name, last_name)
            and changes committed.
        Args:
            validated: (Dict)
            jwt_token: (Dict)
            role: (ERoles)

        Returns:
            dict: Repr of the resource
        """
        hashed_password = data_hashing(validated['password'])
        if self.exists(model=User, email=validated['email']):
            raise HTTPConflict(description="This email address used by another user.")

        user = User(email=validated['email'], password=hashed_password, role=role,
                    account_id=jwt_token['account_id'], first_name=validated['first_name'],
                    last_name=validated['last_name'])

        self.session.add(user)

        return user
Exemple #2
0
    def update(self, params, meta, **kwargs):
        registration_id = kwargs['registration_id']
        validated = kwargs['validated']
        hashed_password = data_hashing(validated['password'])

        account = self.db.get(Account, is_active=False, _id=registration_id)
        if account is None:
            raise HTTPNotFound(
                description=
                "The account does not exist by given registration_id or already activated."
            )

        if account.approve_code == validated['approve_code']:
            admin = User(email=validated['email'],
                         password=hashed_password,
                         role=ERoles.admin,
                         first_name=validated['first_name'],
                         last_name=validated['last_name'],
                         account_id=account.id)

            account.is_active = True
            self.db.session.add(admin)
            token_payload = create_auth_token_payload(
                admin.id, role=admin.role, account_id=admin.account_id)
            token = encode_jwt_token(token_payload)
            add_user_token(admin.id, token)
            return {
                "token": token,
                "id": admin.id,
                "email": admin.email,
                "first_name": admin.first_name,
                "last_name": admin.last_name
            }
        else:
            raise HTTPConflict(description="Approve code does not match.")
Exemple #3
0
    def update(self, params, meta, **kwargs):
        reset_token = kwargs['validated']['reset_token']
        password = kwargs['validated']['password']
        if not remove_reset_password_token(reset_token):
            raise HTTPNotFound(description="Invalid reset token")

        payload = decode_jwt_token(reset_token, "resetToken")
        user = self.db.get_object(User, email=payload['email'])
        hashed_password = data_hashing(password)
        user.password = hashed_password
Exemple #4
0
 def update(self, params, meta, **kwargs):
     kwargs['validated']['password'] = data_hashing(
         kwargs['validated']['password'])
     updated_user = self.db.update_user(
         user_id=kwargs['admin_id'],
         validated=kwargs['validated'],
         account_id=kwargs['token']['account_id'])
     return {
         "email": updated_user.email,
         "role": updated_user.role.name,
         "first_name": updated_user.first_name,
         "last_name": updated_user.last_name,
     }
Exemple #5
0
    def create(self, params, meta, **kwargs):
        validated = kwargs['validated']
        hashed_password = data_hashing(validated['password'])
        user = self.db.login(validated['email'], hashed_password)

        if user.role.name is "manager":
            token_payload = create_auth_token_payload(user.id,
                                                      role=user.role,
                                                      tenant_id=user.tenant_id)
            token = encode_jwt_token(token_payload)
        else:
            token_payload = create_auth_token_payload(
                user.id, role=user.role, account_id=user.account_id)
            token = encode_jwt_token(token_payload)
        add_user_token(user.id, token)

        return {"token": token}