| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- from pydantic import BaseModel
- class GroupBrief(BaseModel):
- """Brief group info for embedding in user responses."""
- id: int
- name: str
- class Config:
- from_attributes = True
- class LoginRequest(BaseModel):
- username: str
- password: str
- class LoginResponse(BaseModel):
- access_token: str
- token_type: str = "bearer"
- user: "UserResponse"
- class UserCreate(BaseModel):
- username: str
- password: str | None = None # Optional when advanced auth is enabled
- email: str | None = None
- role: str = "user"
- group_ids: list[int] | None = None
- class UserUpdate(BaseModel):
- username: str | None = None
- password: str | None = None
- email: str | None = None
- role: str | None = None
- is_active: bool | None = None
- group_ids: list[int] | None = None
- class UserResponse(BaseModel):
- id: int
- username: str
- email: str | None = None
- role: str # Deprecated, kept for backward compatibility
- is_active: bool
- is_admin: bool # Computed from role and group membership
- groups: list[GroupBrief] = []
- permissions: list[str] = [] # All permissions from groups
- created_at: str
- class Config:
- from_attributes = True
- class ChangePasswordRequest(BaseModel):
- current_password: str
- new_password: str
- class SetupRequest(BaseModel):
- auth_enabled: bool
- admin_username: str | None = None
- admin_password: str | None = None
- class SetupResponse(BaseModel):
- auth_enabled: bool
- admin_created: bool | None = None
- class ForgotPasswordRequest(BaseModel):
- email: str
- class ForgotPasswordResponse(BaseModel):
- message: str
- class ResetPasswordRequest(BaseModel):
- user_id: int
- class ResetPasswordResponse(BaseModel):
- message: str
- class SMTPSettings(BaseModel):
- smtp_host: str
- smtp_port: int
- smtp_username: str | None = None # Optional when auth is disabled
- smtp_password: str | None = None # Optional for read operations or when auth is disabled
- smtp_security: str = "starttls" # 'starttls', 'ssl', 'none'
- smtp_auth_enabled: bool = True
- smtp_from_email: str
- smtp_from_name: str = "BamBuddy"
- # Deprecated field for backward compatibility
- smtp_use_tls: bool | None = None
- class TestSMTPRequest(BaseModel):
- smtp_host: str
- smtp_port: int
- smtp_username: str | None = None # Optional when auth is disabled
- smtp_password: str | None = None # Optional when auth is disabled
- smtp_security: str = "starttls" # 'starttls', 'ssl', 'none'
- smtp_auth_enabled: bool = True
- smtp_from_email: str
- test_recipient: str
- # Deprecated field for backward compatibility
- smtp_use_tls: bool | None = None
- class TestSMTPResponse(BaseModel):
- success: bool
- message: str
|