diff --git a/api/app.py b/api/app.py index 591df943eb..dac357c0e9 100644 --- a/api/app.py +++ b/api/app.py @@ -31,6 +31,7 @@ from config import Config, CloudEditionConfig from commands import register_commands from models.account import TenantAccountJoin, AccountStatus from models.model import Account, EndUser, App +from services.account_service import TenantService import warnings warnings.simplefilter("ignore", ResourceWarning) @@ -89,6 +90,15 @@ def initialize_extensions(app): ext_sentry.init_app(app) +def _create_tenant_for_account(account): + tenant = TenantService.create_tenant(f"{account.name}'s Workspace") + + TenantService.create_tenant_member(tenant, account, role='owner') + account.current_tenant = tenant + + return tenant + + # Flask-Login configuration @login_manager.user_loader def load_user(user_id): @@ -119,7 +129,9 @@ def load_user(user_id): if tenant_account_join: account.current_tenant_id = tenant_account_join.tenant_id - session['workspace_id'] = account.current_tenant_id + else: + _create_tenant_for_account(account) + session['workspace_id'] = account.current_tenant_id else: account.current_tenant_id = workspace_id else: @@ -127,7 +139,9 @@ def load_user(user_id): TenantAccountJoin.account_id == account.id).first() if tenant_account_join: account.current_tenant_id = tenant_account_join.tenant_id - session['workspace_id'] = account.current_tenant_id + else: + _create_tenant_for_account(account) + session['workspace_id'] = account.current_tenant_id account.last_active_at = datetime.utcnow() db.session.commit() diff --git a/api/controllers/console/auth/login.py b/api/controllers/console/auth/login.py index 89f5d91789..c78c54e411 100644 --- a/api/controllers/console/auth/login.py +++ b/api/controllers/console/auth/login.py @@ -35,7 +35,7 @@ class LoginApi(Resource): try: TenantService.switch_tenant(account) except Exception: - raise AccountNotLinkTenantError("Account not link tenant") + pass flask_login.login_user(account, remember=args['remember_me']) AccountService.update_last_login(account, request)