| account = _generate_account(provider, user_info) | account = _generate_account(provider, user_info) | ||||
| except AccountNotFoundError: | except AccountNotFoundError: | ||||
| return redirect(f"{dify_config.CONSOLE_WEB_URL}/signin?message=Account not found.") | return redirect(f"{dify_config.CONSOLE_WEB_URL}/signin?message=Account not found.") | ||||
| except WorkSpaceNotFoundError: | |||||
| return redirect(f"{dify_config.CONSOLE_WEB_URL}/signin?message=Workspace not found.") | |||||
| except WorkSpaceNotAllowedCreateError: | |||||
| except (WorkSpaceNotFoundError, WorkSpaceNotAllowedCreateError): | |||||
| return redirect( | return redirect( | ||||
| f"{dify_config.CONSOLE_WEB_URL}/signin" | f"{dify_config.CONSOLE_WEB_URL}/signin" | ||||
| "?message=Workspace not found, please contact system admin to invite you to join in a workspace." | "?message=Workspace not found, please contact system admin to invite you to join in a workspace." | ||||
| ) | ) | ||||
| # Check account status | # Check account status | ||||
| if account.status in {AccountStatus.BANNED.value, AccountStatus.CLOSED.value}: | |||||
| return {"error": "Account is banned or closed."}, 403 | |||||
| if account.status == AccountStatus.BANNED.value: | |||||
| return redirect(f"{dify_config.CONSOLE_WEB_URL}/signin?message=Account is banned.") | |||||
| if account.status == AccountStatus.PENDING.value: | if account.status == AccountStatus.PENDING.value: | ||||
| account.status = AccountStatus.ACTIVE.value | account.status = AccountStatus.ACTIVE.value |
| if not account: | if not account: | ||||
| return None | return None | ||||
| if account.status in {AccountStatus.BANNED.value, AccountStatus.CLOSED.value}: | |||||
| raise Unauthorized("Account is banned or closed.") | |||||
| if account.status == AccountStatus.BANNED.value: | |||||
| raise Unauthorized("Account is banned.") | |||||
| current_tenant = TenantAccountJoin.query.filter_by(account_id=account.id, current=True).first() | current_tenant = TenantAccountJoin.query.filter_by(account_id=account.id, current=True).first() | ||||
| if current_tenant: | if current_tenant: | ||||
| if not account: | if not account: | ||||
| raise AccountNotFoundError() | raise AccountNotFoundError() | ||||
| if account.status in {AccountStatus.BANNED.value, AccountStatus.CLOSED.value}: | |||||
| raise AccountLoginError("Account is banned or closed.") | |||||
| if account.status == AccountStatus.BANNED.value: | |||||
| raise AccountLoginError("Account is banned.") | |||||
| if password and invite_token and account.password is None: | if password and invite_token and account.password is None: | ||||
| # if invite_token is valid, set password and password_salt | # if invite_token is valid, set password and password_salt | ||||
| if not account: | if not account: | ||||
| return None | return None | ||||
| if account.status in {AccountStatus.BANNED.value, AccountStatus.CLOSED.value}: | |||||
| raise Unauthorized("Account is banned or closed.") | |||||
| if account.status == AccountStatus.BANNED.value: | |||||
| raise Unauthorized("Account is banned.") | |||||
| return account | return account | ||||