|
|
|
|
@ -604,6 +604,7 @@ class RegisterService:
|
|
|
|
|
provider: Optional[str] = None,
|
|
|
|
|
language: Optional[str] = None,
|
|
|
|
|
status: Optional[AccountStatus] = None,
|
|
|
|
|
is_invite_member: Optional[bool] = False,
|
|
|
|
|
) -> Account:
|
|
|
|
|
db.session.begin_nested()
|
|
|
|
|
"""Register account"""
|
|
|
|
|
@ -617,12 +618,15 @@ class RegisterService:
|
|
|
|
|
if open_id is not None or provider is not None:
|
|
|
|
|
AccountService.link_account_integrate(provider, open_id, account)
|
|
|
|
|
if dify_config.EDITION != "SELF_HOSTED":
|
|
|
|
|
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
|
|
|
|
|
|
|
|
|
|
TenantService.create_tenant_member(tenant, account, role="owner")
|
|
|
|
|
account.current_tenant = tenant
|
|
|
|
|
should_create_workspace = not is_invite_member or (
|
|
|
|
|
is_invite_member and dify_config.ALLOW_CREATE_WORKSPACE
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
tenant_was_created.send(tenant)
|
|
|
|
|
if should_create_workspace:
|
|
|
|
|
tenant = TenantService.create_tenant(f"{account.name}'s Workspace")
|
|
|
|
|
TenantService.create_tenant_member(tenant, account, role="owner")
|
|
|
|
|
account.current_tenant = tenant
|
|
|
|
|
tenant_was_created.send(tenant)
|
|
|
|
|
|
|
|
|
|
db.session.commit()
|
|
|
|
|
except Exception as e:
|
|
|
|
|
@ -643,7 +647,9 @@ class RegisterService:
|
|
|
|
|
TenantService.check_member_permission(tenant, inviter, None, "add")
|
|
|
|
|
name = email.split("@")[0]
|
|
|
|
|
|
|
|
|
|
account = cls.register(email=email, name=name, language=language, status=AccountStatus.PENDING)
|
|
|
|
|
account = cls.register(
|
|
|
|
|
email=email, name=name, language=language, status=AccountStatus.PENDING, is_invite_member=True
|
|
|
|
|
)
|
|
|
|
|
# Create new tenant member for invited tenant
|
|
|
|
|
TenantService.create_tenant_member(tenant, account, role)
|
|
|
|
|
TenantService.switch_tenant(account, tenant.id)
|
|
|
|
|
|