Ejemplo n.º 1
0
    def create(self, params, meta, **kwargs):
        validated = kwargs.get('validated')

        self.check_tenant_exists(email=validated['tenant_email'])

        tenant = Tenant(email=validated['tenant_email'],
                        address=validated['address'],
                        organization_name=validated['organization_name'],
                        phone=validated['phone'])
        user = User(email=validated['email'],
                    password=validated['password'],
                    role=ERoles.manager)

        tenant.managers.append(user)

        # Record JWT token expire time.
        iat = datetime.datetime.utcnow()
        exp = iat + datetime.timedelta(weeks=1)
        user.auth_token = encode_jwt_token(user.id,
                                           exp=exp,
                                           iat=iat,
                                           role=ERoles.manager.value,
                                           tenant_id=tenant.id)

        self.db.session.add(tenant)

        validated['manager_token'] = user.auth_token
        validated['tenant_id'] = tenant.id
        return validated
Ejemplo n.º 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.")
Ejemplo n.º 3
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}
Ejemplo n.º 4
0
    def delete(self, params, meta, **kwargs):
        others = params.get('others')
        payload = kwargs['token']
        user_id = payload['sub']

        token = encode_jwt_token(payload)
        remove_user_token(user_id, token)

        if others:
            remove_user_tokens(user_id)
            add_user_token(user_id, token)
Ejemplo n.º 5
0
    def create(self, params, meta, **kwargs):
        email = kwargs['validated']['email']
        user = self.db.get_object(User, email=email)

        token_payload = create_reset_password_payload(email)
        token = encode_jwt_token(token_payload)
        add_reset_password_token(token)

        mail_response = send_reset_password_mail(email, token)
        email_object = Email(provider_mail_id=mail_response['id'],
                             account_id=user.account_id,
                             text=mail_response['text'],
                             subject=mail_response['subject'],
                             receiver=email,
                             provider="MAILGUN",
                             category="reset_password")
        self.db.session.add(email_object)
Ejemplo n.º 6
0
    def create(self, params, meta, **kwargs):
        user = self.db.create_user(validated=kwargs['validated'],
                                   jwt_token=kwargs['token'],
                                   role=self.role)

        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,
            "role": user.role.name,
            "id": user.id,
            "email": user.email,
            "first_name": user.first_name,
            "last_name": user.last_name
        }