mirror of
https://github.com/langgenius/dify.git
synced 2026-04-16 02:16:57 +08:00
48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
from enum import StrEnum, auto
|
|
|
|
from pydantic import BaseModel, Field, field_validator
|
|
|
|
from libs.helper import EmailStr
|
|
from libs.password import valid_password
|
|
|
|
|
|
class LoginFailureReason(StrEnum):
|
|
"""Bounded reason codes for failed login audit logs."""
|
|
|
|
ACCOUNT_BANNED = auto()
|
|
ACCOUNT_IN_FREEZE = auto()
|
|
ACCOUNT_NOT_FOUND = auto()
|
|
EMAIL_CODE_EMAIL_MISMATCH = auto()
|
|
INVALID_CREDENTIALS = auto()
|
|
INVALID_EMAIL_CODE = auto()
|
|
INVALID_EMAIL_CODE_TOKEN = auto()
|
|
INVALID_INVITATION_EMAIL = auto()
|
|
LOGIN_RATE_LIMITED = auto()
|
|
|
|
|
|
class LoginPayloadBase(BaseModel):
|
|
email: EmailStr
|
|
password: str
|
|
|
|
|
|
class ForgotPasswordSendPayload(BaseModel):
|
|
email: EmailStr
|
|
language: str | None = None
|
|
|
|
|
|
class ForgotPasswordCheckPayload(BaseModel):
|
|
email: EmailStr
|
|
code: str
|
|
token: str = Field(min_length=1)
|
|
|
|
|
|
class ForgotPasswordResetPayload(BaseModel):
|
|
token: str = Field(min_length=1)
|
|
new_password: str
|
|
password_confirm: str
|
|
|
|
@field_validator("new_password", "password_confirm")
|
|
@classmethod
|
|
def validate_password(cls, value: str) -> str:
|
|
return valid_password(value)
|