diff --git a/api/src/api/v1/deps.py b/api/src/api/v1/deps.py index d38a39b..79e62d8 100644 --- a/api/src/api/v1/deps.py +++ b/api/src/api/v1/deps.py @@ -5,7 +5,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from src.core.config import settings from src.core.security import verify_token from src.db.session import get_db -from src.domain.models import UserRole, Users +from src.db.models.app_user import AppUser +from src.db.models.role import UserRoleEnum from src.repository.user_repository import UserRepository security = HTTPBearer() @@ -16,7 +17,7 @@ if settings.DEBUG: async def get_current_user( credentials: HTTPAuthorizationCredentials = Depends(security), db: AsyncSession = Depends(get_db), - ) -> Users: + ) -> AppUser: token = credentials.credentials payload = verify_token(token) if payload is None: @@ -52,7 +53,7 @@ else: async def get_current_user( user: UserInfo = Depends(get_user_dependency), db: AsyncSession = Depends(get_db), - ) -> Users: + ) -> AppUser: user_repo = UserRepository(db) db_user = await user_repo.get_by_email(user.email) if db_user is None: @@ -64,22 +65,22 @@ else: return db_user -async def get_current_active_user(current_user: Users = Depends(get_current_user)) -> Users: +async def get_current_active_user(current_user: AppUser = Depends(get_current_user)) -> AppUser: return current_user async def get_current_active_user_with_set_db( - current_user: Users = Depends(get_current_user), + current_user: AppUser = Depends(get_current_user), db: AsyncSession = Depends(get_db), -) -> Users: +) -> AppUser: user_repo = UserRepository(db) await user_repo.set_app_user_id(current_user.id) return current_user -def require_admin(current_user: Users = Depends(get_current_active_user)) -> Users: - if current_user.role_id != UserRole.ADMIN: +def require_admin(current_user: AppUser = Depends(get_current_active_user)) -> AppUser: + if current_user.role_id != UserRoleEnum.ADMIN: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Недостаточно прав", @@ -87,11 +88,11 @@ def require_admin(current_user: Users = Depends(get_current_active_user)) -> Use return current_user -def require_executor(current_user: Users = Depends(get_current_active_user)) -> Users: +def require_executor(current_user: AppUser = Depends(get_current_active_user)) -> AppUser: if current_user.role_id not in [ - UserRole.ADMIN, - UserRole.EXECUTOR_DFIP, - UserRole.EXECUTOR_RF, + UserRoleEnum.ADMIN, + UserRoleEnum.EXECUTOR_DFIP, + UserRoleEnum.EXECUTOR_RF, ]: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, @@ -100,8 +101,8 @@ def require_executor(current_user: Users = Depends(get_current_active_user)) -> return current_user -def require_executor_dfip(current_user: Users = Depends(get_current_active_user)) -> Users: - if current_user.role_id not in [UserRole.ADMIN, UserRole.EXECUTOR_DFIP]: +def require_executor_dfip(current_user: AppUser = Depends(get_current_active_user)) -> AppUser: + if current_user.role_id not in [UserRoleEnum.ADMIN, UserRoleEnum.EXECUTOR_DFIP]: raise HTTPException( status_code=status.HTTP_403_FORBIDDEN, detail="Недостаточно прав", diff --git a/api/src/api/v1/users.py b/api/src/api/v1/users.py index 2c233d2..0570173 100644 --- a/api/src/api/v1/users.py +++ b/api/src/api/v1/users.py @@ -3,7 +3,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from src.api.v1.deps import get_current_active_user, require_admin, require_executor_dfip from src.db.session import get_db -from src.domain.models import Users +from src.db.models.app_user import AppUser from src.domain.schemas import User as UserSchema from src.domain.schemas import ( SSPIDList, @@ -21,7 +21,7 @@ router = APIRouter(prefix="/users", tags=["users"]) @router.get("/me", response_model=UserSchema) -async def get_current_user_info(current_user: Users = Depends(get_current_active_user)): +async def get_current_user_info(current_user: AppUser = Depends(get_current_active_user)): return current_user @@ -30,7 +30,7 @@ async def get_users( skip: int = 0, limit: int = 100, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) users = await user_service.get_all(current_user, skip=skip, limit=limit) @@ -41,7 +41,7 @@ async def get_users( async def get_many_ssp( user_id: int, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_executor_dfip), + current_user: AppUser = Depends(require_executor_dfip), ): user_service = UserService(db) ssp_list = await user_service.get_many_ssp(user_id, current_user) @@ -57,7 +57,7 @@ async def set_many_ssp( user_id: int, ssp_ids_data: SSPIDList, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) success = await user_service.set_many_ssp(user_id, ssp_ids_data.ssp_ids, current_user) @@ -72,7 +72,7 @@ async def unset_many_ssp( user_id: int, ssp_ids_data: SSPIDList, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) success = await user_service.unset_many_ssp( @@ -88,7 +88,7 @@ async def unset_many_ssp( async def get_user( user_id: int, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) user = await user_service.get(user_id, current_user) @@ -104,7 +104,7 @@ async def get_user( async def create_user( user_data: UserCreate, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) user = await user_service.create_user(user_data=user_data, creator=current_user) @@ -116,7 +116,7 @@ async def update_user( user_id: int, user_data: UserUpdate, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) user = await user_service.update_user( @@ -131,7 +131,7 @@ async def update_user( async def delete_user( user_id: int, db: AsyncSession = Depends(get_db), - current_user: Users = Depends(require_admin), + current_user: AppUser = Depends(require_admin), ): user_service = UserService(db) await user_service.delete_user(user_id=user_id, user=current_user) diff --git a/api/src/repository/user_repository.py b/api/src/repository/user_repository.py index f497a69..af89cdc 100644 --- a/api/src/repository/user_repository.py +++ b/api/src/repository/user_repository.py @@ -10,7 +10,7 @@ from src.db.models.role import Role from src.db.models.user_org import UserOrg from src.db.models.app_user import AppUser from src.core.security import get_password_hash, verify_password -# from src.domain.models import Role, OrgUnit, UserOrg, AppUser + class UserRepository: diff --git a/api/tests/integration/test_forms_api_smoke.py b/api/tests/integration/test_forms_api_smoke.py index d9643db..d7b0d4f 100644 --- a/api/tests/integration/test_forms_api_smoke.py +++ b/api/tests/integration/test_forms_api_smoke.py @@ -32,7 +32,7 @@ def test_forms_sheet_get_not_found_error_shape(client, admin_tokens): assert response.status_code == 404 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload + assert "message" in payload def test_forms_cell_update_not_found_error_shape(client, admin_tokens): @@ -44,7 +44,7 @@ def test_forms_cell_update_not_found_error_shape(client, admin_tokens): assert response.status_code == 404 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload + assert "message" in payload def test_forms_cell_update(client, admin_tokens): @@ -72,7 +72,7 @@ def test_forms_cells_update_not_found_error_shape(client, admin_tokens): assert response.status_code == 404 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload + assert "message" in payload def test_forms_cells_update(client, admin_tokens): @@ -104,7 +104,7 @@ def test_forms_add_line_not_found_error_shape(client, admin_tokens): assert response.status_code == 404 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload + assert "message" in payload def test_forms_add_line(client, admin_tokens): @@ -130,4 +130,4 @@ def test_forms_delete_line_not_found_error_shape(client, admin_tokens): assert response.status_code == 404 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload + assert "message" in payload diff --git a/api/tests/integration/test_projects_api_smoke.py b/api/tests/integration/test_projects_api_smoke.py index 07f6386..d6c85b1 100644 --- a/api/tests/integration/test_projects_api_smoke.py +++ b/api/tests/integration/test_projects_api_smoke.py @@ -104,8 +104,8 @@ def test_projects_write_invalid_report_type_error_shape(client, admin_tokens): assert response.status_code == 400 payload = response.json() assert isinstance(payload, dict) - assert "detail" in payload - assert isinstance(payload["detail"], str) + assert "message" in payload + assert isinstance(payload["message"], str) def test_projects_write_report_not_found_error_shape(client, admin_tokens): @@ -120,4 +120,4 @@ def test_projects_write_report_not_found_error_shape(client, admin_tokens): assert response.status_code == 400 payload = response.json() assert isinstance(payload, dict) - assert payload.get("detail") == "Отчёт не найден" + assert payload.get("message") == "Отчёт не найден"