Bläddra i källkod

Feat/optimize login (#9642)

tags/0.10.1
Joe 1 år sedan
förälder
incheckning
22bdfb7e56
Inget konto är kopplat till bidragsgivarens mejladress
2 ändrade filer med 9 tillägg och 11 borttagningar
  1. 3
    5
      api/controllers/console/auth/oauth.py
  2. 6
    6
      api/services/account_service.py

+ 3
- 5
api/controllers/console/auth/oauth.py Visa fil

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

+ 6
- 6
api/services/account_service.py Visa fil

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



Laddar…
Avbryt
Spara