|
|
|
|
@ -55,18 +55,19 @@ class AccountService:
|
|
|
|
|
|
|
|
|
|
if account.status in [AccountStatus.BANNED.value, AccountStatus.CLOSED.value]:
|
|
|
|
|
raise Forbidden('Account is banned or closed.')
|
|
|
|
|
|
|
|
|
|
# init owner's tenant
|
|
|
|
|
tenant_owner = TenantAccountJoin.query.filter_by(account_id=account.id, role='owner').first()
|
|
|
|
|
if not tenant_owner:
|
|
|
|
|
_create_tenant_for_account(account)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
current_tenant = TenantAccountJoin.query.filter_by(account_id=account.id, current=True).first()
|
|
|
|
|
if current_tenant:
|
|
|
|
|
account.current_tenant_id = current_tenant.tenant_id
|
|
|
|
|
account.current_tenant_id = current_tenant.tenant_id
|
|
|
|
|
else:
|
|
|
|
|
account.current_tenant_id = tenant_owner.tenant_id
|
|
|
|
|
tenant_owner.current = True
|
|
|
|
|
available_tenant = TenantAccountJoin.query.filter_by(account_id=account.id) \
|
|
|
|
|
.order_by(TenantAccountJoin.id.asc()).first()
|
|
|
|
|
if not available_tenant:
|
|
|
|
|
raise Forbidden('No available tenant for the user.')
|
|
|
|
|
|
|
|
|
|
account.current_tenant_id = available_tenant.tenant_id
|
|
|
|
|
available_tenant.current = True
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
if datetime.utcnow() - account.last_active_at > timedelta(minutes=10):
|
|
|
|
|
|