Files
bambuddy/backend/app/schemas/auth.py
T
Dakota G 30b34bc255 [Fix]: Changes SMTP testing to use saved settings in the database (#710)
[Fix]: Changes SMTP testing to use saved settings in the database (#710)
2026-03-15 09:13:47 +01:00

109 lines
2.3 KiB
Python

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):
test_recipient: str
class TestSMTPResponse(BaseModel):
success: bool
message: str