mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-13 10:49:55 +00:00
82 lines
2.1 KiB
Python
82 lines
2.1 KiB
Python
"""Authentication endpoints — register, login, refresh, password reset."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.middleware.auth import get_current_user
|
|
from app.schemas.auth import (
|
|
ChangePasswordRequest,
|
|
LoginRequest,
|
|
MessageResponse,
|
|
PasswordResetConfirm,
|
|
PasswordResetRequest,
|
|
RefreshTokenRequest,
|
|
RegisterRequest,
|
|
RegisterResponse,
|
|
)
|
|
from app.services.auth_service import AuthService
|
|
|
|
router = APIRouter(prefix="/auth", tags=["Authentication"])
|
|
|
|
|
|
@router.post("/register", status_code=201, response_model=RegisterResponse)
|
|
def register(body: RegisterRequest):
|
|
svc = AuthService()
|
|
return svc.register(
|
|
email=body.email,
|
|
password=body.password,
|
|
name=body.name,
|
|
role=body.role,
|
|
)
|
|
|
|
|
|
@router.post("/login")
|
|
def login(body: LoginRequest):
|
|
svc = AuthService()
|
|
return svc.login(email=body.email, password=body.password)
|
|
|
|
|
|
@router.post("/refresh")
|
|
def refresh(body: RefreshTokenRequest):
|
|
svc = AuthService()
|
|
return svc.refresh(body.refresh_token)
|
|
|
|
|
|
@router.post("/password-reset/request", response_model=MessageResponse)
|
|
def request_password_reset(body: PasswordResetRequest):
|
|
svc = AuthService()
|
|
msg = svc.request_password_reset(body.email)
|
|
return {"message": msg}
|
|
|
|
|
|
@router.post("/password-reset/confirm", response_model=MessageResponse)
|
|
def confirm_password_reset(
|
|
body: PasswordResetConfirm,
|
|
user: dict = Depends(get_current_user),
|
|
):
|
|
svc = AuthService()
|
|
return svc.reset_password(user["id"], body.new_password)
|
|
|
|
|
|
@router.post("/change-password", response_model=MessageResponse)
|
|
def change_password(
|
|
body: ChangePasswordRequest,
|
|
user: dict = Depends(get_current_user),
|
|
):
|
|
svc = AuthService()
|
|
return svc.change_password(
|
|
user["id"], user["email"], body.current_password, body.new_password
|
|
)
|
|
|
|
|
|
@router.post("/resend-verification", response_model=MessageResponse)
|
|
def resend_verification(user: dict = Depends(get_current_user)):
|
|
svc = AuthService()
|
|
return svc.resend_verification(user["email"])
|
|
|
|
|
|
@router.get("/me")
|
|
def get_me(user: dict = Depends(get_current_user)):
|
|
return user
|