Добавление страницы профиля

This commit is contained in:
2025-12-20 09:59:16 +03:00
parent a3203d713d
commit 3473c31f73
6 changed files with 615 additions and 8 deletions
+24 -7
View File
@@ -7,7 +7,7 @@ from fastapi.security import OAuth2PasswordRequestForm
from sqlmodel import Session, select
from library_service.models.db import Role, User
from library_service.models.dto import Token, UserCreate, UserRead, UserUpdate
from library_service.models.dto import Token, UserCreate, UserRead, UserUpdate, UserList, RoleRead, RoleList
from library_service.settings import get_session
from library_service.auth import (ACCESS_TOKEN_EXPIRE_MINUTES, RequireAdmin,
RequireAuth, authenticate_user, get_password_hash,
@@ -136,7 +136,7 @@ def update_user_me(
@router.get(
"/users",
response_model=list[UserRead],
response_model=UserList,
summary="Список пользователей",
description="Получить список всех пользователей (только для админов)",
)
@@ -148,10 +148,10 @@ def read_users(
):
"""Эндпоинт получения списка всех пользователей"""
users = session.exec(select(User).offset(skip).limit(limit)).all()
return [
UserRead(**user.model_dump(), roles=[role.name for role in user.roles])
for user in users
]
return UserList(
users=[UserRead(**user.model_dump()) for user in users],
total=len(users),
)
@router.post(
@@ -233,4 +233,21 @@ def remove_role_from_user(
session.commit()
session.refresh(user)
return UserRead(**user.model_dump(), roles=[r.name for r in user.roles])
return UserRead(**user.model_dump(), roles=[r.name for r in user.roles])
@router.get(
"/roles",
response_model=RoleList,
summary="Получить список ролей",
description="Возвращает список ролей",
)
def get_roles(
session: Session = Depends(get_session),
):
"""Эндпоинт получения списа ролей"""
roles = session.exec(select(Role)).all()
return RoleList(
roles=[RoleRead(**role.model_dump()) for role in roles],
total=len(roles),
)
+5
View File
@@ -66,6 +66,11 @@ async def auth(request: Request):
return templates.TemplateResponse(request, "auth.html")
@router.get("/profile", include_in_schema=False)
async def profile(request: Request):
"""Эндпоинт страницы профиля"""
return templates.TemplateResponse(request, "profile.html")
@router.get("/api", include_in_schema=False)
async def api(request: Request, app=Depends(lambda: get_app())):