feat(auth): one-time login links, JWT + refresh, roles, service token, tests
This commit is contained in:
1 parent
4a610ba94a
commit
049b679654
12 files changed
+553
-1
No files matched your search
@@ -0,0 +1,62 @@
|
||||
"""Pydantic-схемы аутентификации."""
|
||||
from datetime import datetime
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
|
||||
from app.models.enums import MessengerType
|
||||
|
||||
|
||||
class LoginTokenCreate(BaseModel):
|
||||
region_id: int | None = None
|
||||
user_id: int | None = None
|
||||
ttl_minutes: int = 60
|
||||
|
||||
|
||||
class LoginTokenOut(BaseModel):
|
||||
id: str
|
||||
url: str
|
||||
expires_at: datetime
|
||||
|
||||
|
||||
class LoginRequest(BaseModel):
|
||||
token: str
|
||||
messenger_type: MessengerType
|
||||
messenger_id: str
|
||||
full_name: str | None = None
|
||||
|
||||
|
||||
class RefreshRequest(BaseModel):
|
||||
refresh_token: str
|
||||
|
||||
|
||||
class TokenPair(BaseModel):
|
||||
access_token: str
|
||||
refresh_token: str
|
||||
expires_at: datetime
|
||||
|
||||
|
||||
class RegionOut(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
name: str
|
||||
is_primary: bool
|
||||
|
||||
|
||||
class RoleOut(BaseModel):
|
||||
code: str
|
||||
region_id: int | None = None
|
||||
|
||||
|
||||
class UserOut(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
full_name: str | None = None
|
||||
member_type: str | None = None
|
||||
regions: list[RegionOut] = []
|
||||
roles: list[RoleOut] = []
|
||||
|
||||
|
||||
class LoginResponse(TokenPair):
|
||||
user: UserOut
|
||||
Reference in new issue
Block a user