mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
63 lines
2.3 KiB
Python
63 lines
2.3 KiB
Python
"""Authentication routes"""
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlalchemy.orm import Session
|
|
from ..database import get_db
|
|
from ..crud import auth as auth_crud
|
|
from ..utils.loggers import auth_logger
|
|
|
|
router = APIRouter()
|
|
|
|
@router.post("/login")
|
|
async def login(credentials: dict, db: Session = Depends(get_db)):
|
|
"""Employee login endpoint"""
|
|
try:
|
|
if not credentials.get("lastName") or not credentials.get("password"):
|
|
raise HTTPException(
|
|
status_code=400,
|
|
detail="Необходимо указать фамилию и пароль"
|
|
)
|
|
|
|
employee = auth_crud.authenticate_employee(
|
|
db,
|
|
credentials["lastName"],
|
|
credentials["password"]
|
|
)
|
|
|
|
if not employee:
|
|
raise HTTPException(
|
|
status_code=401,
|
|
detail="Неверные учетные данные"
|
|
)
|
|
|
|
return employee
|
|
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
auth_logger.error(f"Login error: {e}", exc_info=True)
|
|
raise HTTPException(status_code=500, detail="Ошибка сервера")
|
|
|
|
@router.post("/admin")
|
|
async def admin_login(credentials: dict):
|
|
"""Admin login endpoint"""
|
|
try:
|
|
if not credentials.get("username") or not credentials.get("password"):
|
|
raise HTTPException(
|
|
status_code=400,
|
|
detail="Необходимо указать имя пользователя и пароль"
|
|
)
|
|
|
|
# Простая проверка для админа (в реальном приложении используйте безопасную аутентификацию)
|
|
if credentials["username"] == "admin" and credentials["password"] == "admin66":
|
|
return {"isAdmin": True}
|
|
|
|
raise HTTPException(
|
|
status_code=401,
|
|
detail="Неверные учетные данные администратора"
|
|
)
|
|
|
|
except HTTPException:
|
|
raise
|
|
except Exception as e:
|
|
auth_logger.error(f"Admin login error: {e}", exc_info=True)
|
|
raise HTTPException(status_code=500, detail="Ошибка сервера") |