Explorar o código

fix: automatically create tenant for user (#793)

Matri hai 1 ano
pai
achega
fc7e4ac75b
Modificáronse 2 ficheiros con 17 adicións e 3 borrados
  1. 16 2
      api/app.py
  2. 1 1
      api/controllers/console/auth/login.py

+ 16 - 2
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()

+ 1 - 1
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)