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
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.")
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
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, }
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}