- Implemented SvelteKit frontend with authentication callback handling. - Created demo routes and paraglide localization functionality. - Added health check and entrypoint scripts for backend services. - Established PostgreSQL and Keycloak initialization scripts with health checks. - Introduced models for database schema using SQLAlchemy. - Configured Vite and SvelteKit for development and testing environments. - Added health check script to verify service statuses and resource usage. - Created Docker entrypoint scripts for seamless service startup.
72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
"""
|
|
DTOs para módulo de autenticación
|
|
"""
|
|
from pydantic import BaseModel, EmailStr, Field
|
|
from typing import Optional
|
|
|
|
|
|
class LoginRequestDTO(BaseModel):
|
|
"""DTO para solicitud de login"""
|
|
username: str = Field(..., description="Usuario o email")
|
|
password: str = Field(..., min_length=6, description="Contraseña")
|
|
tenant_slug: str = Field(..., description="Slug del tenant")
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"username": "usuario@ejemplo.com",
|
|
"password": "password123",
|
|
"tenant_slug": "empresa-abc"
|
|
}
|
|
}
|
|
|
|
|
|
class TokenResponseDTO(BaseModel):
|
|
"""DTO para respuesta de token"""
|
|
access_token: str
|
|
refresh_token: str
|
|
token_type: str = "bearer"
|
|
expires_in: int
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
"refresh_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
|
|
"token_type": "bearer",
|
|
"expires_in": 3600
|
|
}
|
|
}
|
|
|
|
|
|
class RefreshTokenRequestDTO(BaseModel):
|
|
"""DTO para solicitud de refresh token"""
|
|
refresh_token: str = Field(..., description="Refresh token")
|
|
|
|
|
|
class UserInfoResponseDTO(BaseModel):
|
|
"""DTO para información de usuario"""
|
|
sub: str
|
|
email: Optional[str] = None
|
|
name: Optional[str] = None
|
|
preferred_username: Optional[str] = None
|
|
tenant_id: Optional[int] = None
|
|
roles: list[str] = []
|
|
|
|
class Config:
|
|
json_schema_extra = {
|
|
"example": {
|
|
"sub": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
|
"email": "usuario@ejemplo.com",
|
|
"name": "Juan Pérez",
|
|
"preferred_username": "jperez",
|
|
"tenant_id": 1,
|
|
"roles": ["user", "admin"]
|
|
}
|
|
}
|
|
|
|
|
|
class LogoutRequestDTO(BaseModel):
|
|
"""DTO para solicitud de logout"""
|
|
refresh_token: str = Field(..., description="Refresh token para invalidar")
|