From 2e4e9d11135552391e2217a86ddab04cb5178b66 Mon Sep 17 00:00:00 2001 From: Vladislav Date: Mon, 9 Jun 2025 12:10:40 +0500 Subject: [PATCH] feat: add bearer schema to all endpoints with auth --- api/api/endpoints/account.py | 40 +++++++++++++++--------------------- api/api/endpoints/keyring.py | 25 ++++++++++------------ api/api/endpoints/profile.py | 13 ++++++------ 3 files changed, 34 insertions(+), 44 deletions(-) diff --git a/api/api/endpoints/account.py b/api/api/endpoints/account.py index 2497766..8d996cc 100644 --- a/api/api/endpoints/account.py +++ b/api/api/endpoints/account.py @@ -2,7 +2,6 @@ from fastapi import ( APIRouter, Depends, HTTPException, - Request, status, ) @@ -15,8 +14,9 @@ from api.db.logic.account import get_user_by_id, update_user_by_id, create_user, from api.schemas.account.account import User from api.db.tables.account import AccountStatus +from api.schemas.base import bearer_schema from api.schemas.endpoints.account import UserUpdate,AllUserResponse - +from api.services.auth import get_current_user from api.services.user_role_validation import db_user_role_validation from api.services.update_data_validation import update_user_data_changes @@ -28,17 +28,15 @@ api_router = APIRouter( tags=["User accountModel"], ) -@api_router.get("",response_model=AllUserResponse) +@api_router.get("",dependencies=[Depends(bearer_schema)],response_model=AllUserResponse) async def get_all_account( - - request: Request, - page: int , - limit: int , - connection: AsyncConnection = Depends(get_connection_dep) + page: int = 1, + limit: int = 10, + connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) user_list = await get_user_accaunt_page(connection,page,limit) @@ -51,9 +49,8 @@ async def get_all_account( return user_list -@api_router.get("/{user_id}", response_model=User) -async def get_account(user_id: int, request: Request, connection: AsyncConnection = Depends(get_connection_dep)): - current_user = request.state.current_user +@api_router.get("/{user_id}",dependencies=[Depends(bearer_schema)], response_model=User) +async def get_account(user_id: int, connection: AsyncConnection = Depends(get_connection_dep), current_user = Depends(get_current_user)): authorize_user = await db_user_role_validation(connection, current_user) user = await get_user_by_id(connection, user_id) @@ -65,14 +62,13 @@ async def get_account(user_id: int, request: Request, connection: AsyncConnectio -@api_router.post("", response_model=User) +@api_router.post("", dependencies=[Depends(bearer_schema)],response_model=User) async def create_account( user: UserUpdate, - request: Request, - connection: AsyncConnection = Depends(get_connection_dep) + connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) @@ -90,11 +86,10 @@ async def create_account( ) -@api_router.put("/{user_id}", response_model=User) +@api_router.put("/{user_id}",dependencies=[Depends(bearer_schema)], response_model=User) async def update_account( - user_id: int, request: Request, user_update: UserUpdate, connection: AsyncConnection = Depends(get_connection_dep) + user_id: int, user_update: UserUpdate, connection: AsyncConnection = Depends(get_connection_dep), current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) @@ -116,15 +111,14 @@ async def update_account( return user -@api_router.delete("/{user_id}", response_model=User) +@api_router.delete("/{user_id}", dependencies=[Depends(bearer_schema)],response_model=User) async def delete_account( user_id: int, - request: Request, - connection: AsyncConnection = Depends(get_connection_dep) + connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) diff --git a/api/api/endpoints/keyring.py b/api/api/endpoints/keyring.py index 7d0917c..aa989b3 100644 --- a/api/api/endpoints/keyring.py +++ b/api/api/endpoints/keyring.py @@ -4,7 +4,6 @@ from fastapi import ( Depends, Form, HTTPException, - Request, Response, status, ) @@ -19,9 +18,11 @@ from api.db.logic.keyring import get_key_by_id,create_key,update_key_by_id from api.db.tables.account import KeyStatus +from api.schemas.base import bearer_schema from api.schemas.endpoints.account_keyring import AccountKeyringUpdate from api.schemas.account.account_keyring import AccountKeyring +from api.services.auth import get_current_user from api.services.user_role_validation import db_user_role_validation from api.services.update_data_validation import update_key_data_changes @@ -33,14 +34,13 @@ api_router = APIRouter( ) -@api_router.get("/{user_id}/{key_id}", response_model=AccountKeyring) +@api_router.get("/{user_id}/{key_id}",dependencies=[Depends(bearer_schema)], response_model=AccountKeyring) async def get_keyring( key_id: str, - request: Request, - connection: AsyncConnection = Depends(get_connection_dep) + connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) @@ -52,15 +52,14 @@ async def get_keyring( return keyring -@api_router.post("/{user_id}/{key_id}", response_model=AccountKeyring) +@api_router.post("/{user_id}/{key_id}", dependencies=[Depends(bearer_schema)], response_model=AccountKeyring) async def create_keyring( user_id: int, key_id: str, - request: Request, key: AccountKeyringUpdate, connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) @@ -76,15 +75,14 @@ async def create_keyring( ) -@api_router.put("/{user_id}/{key_id}", response_model=AccountKeyring) +@api_router.put("/{user_id}/{key_id}", dependencies=[Depends(bearer_schema)],response_model=AccountKeyring) async def update_keyring( user_id: int, key_id: str, - request: Request, keyring_update: AccountKeyringUpdate, connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) @@ -106,11 +104,10 @@ async def update_keyring( return keyring -@api_router.delete("/{user_id}/{key_id}", response_model=AccountKeyring) +@api_router.delete("/{user_id}/{key_id}",dependencies=[Depends(bearer_schema)], response_model=AccountKeyring) async def delete_keyring( - user_id: int, key_id: str, request: Request, connection: AsyncConnection = Depends(get_connection_dep) + user_id: int, key_id: str, connection: AsyncConnection = Depends(get_connection_dep), current_user = Depends(get_current_user) ): - current_user = request.state.current_user authorize_user = await db_user_role_validation(connection, current_user) diff --git a/api/api/endpoints/profile.py b/api/api/endpoints/profile.py index e4abc66..383815c 100644 --- a/api/api/endpoints/profile.py +++ b/api/api/endpoints/profile.py @@ -14,6 +14,8 @@ from sqlalchemy.ext.asyncio import AsyncConnection from api.db.connection.session import get_connection_dep from api.db.logic.account import get_user_by_id, update_user_by_id,get_user_by_login +from api.schemas.base import bearer_schema +from api.services.auth import get_current_user from api.services.update_data_validation import update_user_data_changes from api.schemas.endpoints.account import UserUpdate @@ -26,13 +28,11 @@ api_router = APIRouter( ) -@api_router.get("",response_model=User) +@api_router.get("",dependencies=[Depends(bearer_schema)],response_model=User) async def get_profile( - request: Request, connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - # Извлекаем текущего пользователя из request.state - current_user = request.state.current_user user = await get_user_by_login(connection, current_user) @@ -42,13 +42,12 @@ async def get_profile( return user -@api_router.put("",response_model=User) +@api_router.put("", dependencies=[Depends(bearer_schema)],response_model=User) async def update_profile( - request: Request, user_updata: UserUpdate, connection: AsyncConnection = Depends(get_connection_dep), + current_user = Depends(get_current_user) ): - current_user = request.state.current_user user = await get_user_by_login(connection, current_user) if user is None: