mirror of
http://88.130.71.182:3000/BlitTech/deals24togo_be.git
synced 2026-06-12 23:33:21 +00:00
Initial commit
This commit is contained in:
81
app/api/v1/endpoints/auth.py
Normal file
81
app/api/v1/endpoints/auth.py
Normal file
@@ -0,0 +1,81 @@
|
||||
"""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
|
||||
Reference in New Issue
Block a user