feat(link_codes): linking method between telegram and website

This commit is contained in:
2026-08-18 21:10:57 +07:00
parent 7ae3c98585
commit 771d44d34c
12 changed files with 247 additions and 9 deletions

View File

@@ -16,3 +16,12 @@ class AuthContext:
user: User
auth_method: Literal["jwt", "service"]
service: str | None = None
@dataclass
class ServiceIdentity:
"""
Proves that request is coming from verified source, no user context provided.
"""
service: str

View File

@@ -9,3 +9,9 @@ class SubscriptionStatus(StrEnum):
class ServiceSignatureStatus(StrEnum):
ACTIVE = "active"
INACTIVE = "inactive"
class LinkCodeStatus(StrEnum):
ACTIVE = "active"
USED = "used"
EXPIRED = "expired"

20
schemas/link_codes.py Normal file
View File

@@ -0,0 +1,20 @@
from datetime import datetime
from pydantic import BaseModel, Field, computed_field
from config import cfg
class LinkCodeResponse(BaseModel):
code: str = Field()
expires_at: datetime = Field()
@computed_field
@property
def deep_link(self) -> str:
return cfg.bot_url + "?start=" + self.code
class LinkCodeConsume(BaseModel):
code: str = Field()
telegram_id: int = Field()