sync: migrate secure-online-shop to Gitea (2026-08-10)

This commit is contained in:
konturai-ops
2026-08-10 15:26:59 +00:00
commit 2022c8890d
44 changed files with 3196 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
from __future__ import annotations
from typing import Annotated
from fastapi import Depends
from fastapi.security import HTTPAuthorizationCredentials, HTTPBearer
from sqlalchemy.orm import Session
from app.core.exceptions import ForbiddenError, UnauthorizedError
from app.core.security import decode_access_token
from app.db.session import get_db
from app.models.user import RoleEnum, User
from app.services.auth_service import AuthService
bearer_scheme = HTTPBearer(
scheme_name="BearerAuth",
description="JWT token from /api/v1/auth/login",
)
def get_current_user(
db: Annotated[Session, Depends(get_db)],
credentials: Annotated[HTTPAuthorizationCredentials, Depends(bearer_scheme)],
) -> User:
token_payload = decode_access_token(credentials.credentials)
user = AuthService(db).get_user_by_id(token_payload.user_id)
if user is None or not user.is_active:
raise UnauthorizedError("Could not validate credentials")
return user
def get_current_shop(
current_user: Annotated[User, Depends(get_current_user)],
) -> User:
if current_user.role != RoleEnum.shop:
raise ForbiddenError("Shop privileges are required")
return current_user