2026-02-05 15:13:06 +08:00
|
|
|
from __future__ import annotations
|
|
|
|
|
|
2026-02-25 10:20:43 +08:00
|
|
|
from typing import Protocol
|
2026-02-05 15:13:06 +08:00
|
|
|
|
2026-02-24 16:38:30 +08:00
|
|
|
from v1.auth.schemas import (
|
2026-02-26 13:41:32 +08:00
|
|
|
SessionCreateRequest,
|
|
|
|
|
SessionRefreshRequest,
|
|
|
|
|
SessionResponse,
|
|
|
|
|
UserByEmailResponse,
|
|
|
|
|
VerificationCreateRequest,
|
|
|
|
|
VerificationCreateResponse,
|
|
|
|
|
VerificationResendRequest,
|
|
|
|
|
VerificationVerifyRequest,
|
2026-02-05 15:13:06 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AuthServiceGateway(Protocol):
|
2026-02-26 13:41:32 +08:00
|
|
|
async def create_verification(
|
|
|
|
|
self, request: VerificationCreateRequest
|
|
|
|
|
) -> VerificationCreateResponse:
|
2026-02-25 13:34:02 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def verify_verification(
|
|
|
|
|
self, request: VerificationVerifyRequest
|
|
|
|
|
) -> SessionResponse:
|
2026-02-25 13:34:02 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def resend_verification(self, request: VerificationResendRequest) -> None:
|
2026-02-05 15:13:06 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def create_session(self, request: SessionCreateRequest) -> SessionResponse:
|
2026-02-05 15:13:06 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def refresh_session(self, request: SessionRefreshRequest) -> SessionResponse:
|
2026-02-05 15:13:06 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def delete_session(self, refresh_token: str | None) -> None:
|
2026-02-05 15:13:06 +08:00
|
|
|
raise NotImplementedError
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def get_user_by_email(self, email: str) -> UserByEmailResponse:
|
2026-02-25 10:20:43 +08:00
|
|
|
raise NotImplementedError
|
2026-02-05 15:13:06 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AuthService:
|
|
|
|
|
_gateway: AuthServiceGateway
|
|
|
|
|
|
|
|
|
|
def __init__(self, gateway: AuthServiceGateway) -> None:
|
|
|
|
|
self._gateway = gateway
|
|
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def create_verification(
|
|
|
|
|
self, request: VerificationCreateRequest
|
|
|
|
|
) -> VerificationCreateResponse:
|
|
|
|
|
return await self._gateway.create_verification(request)
|
2026-02-25 13:34:02 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def verify_verification(
|
|
|
|
|
self, request: VerificationVerifyRequest
|
|
|
|
|
) -> SessionResponse:
|
|
|
|
|
return await self._gateway.verify_verification(request)
|
2026-02-25 13:34:02 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def resend_verification(self, request: VerificationResendRequest) -> None:
|
|
|
|
|
await self._gateway.resend_verification(request)
|
2026-02-05 15:13:06 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def create_session(self, request: SessionCreateRequest) -> SessionResponse:
|
|
|
|
|
return await self._gateway.create_session(request)
|
2026-02-05 15:13:06 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def refresh_session(self, request: SessionRefreshRequest) -> SessionResponse:
|
|
|
|
|
return await self._gateway.refresh_session(request)
|
2026-02-05 15:13:06 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def delete_session(self, refresh_token: str | None) -> None:
|
|
|
|
|
await self._gateway.delete_session(refresh_token)
|
2026-02-05 15:13:06 +08:00
|
|
|
|
2026-02-26 13:41:32 +08:00
|
|
|
async def get_user_by_email(self, email: str) -> UserByEmailResponse:
|
2026-02-25 10:20:43 +08:00
|
|
|
return await self._gateway.get_user_by_email(email)
|