from fastapi import APIRouter, Depends, HTTPException from backend.services.email_sender_service import EmailSenderService from common.token.token_manager import TokenManager from fastapi.security import HTTPBearer, HTTPAuthorizationCredentials router = APIRouter() email_sender_service = EmailSenderService() token_manager = TokenManager() security = HTTPBearer() def get_current_tenant_id( credentials: HTTPAuthorizationCredentials = Depends(security) ) -> str: try: payload = token_manager.decode_token(credentials.credentials) tenant_id = payload.get("tenant_id") if not tenant_id: raise HTTPException(status_code=401, detail="No tenant_id in token") return tenant_id except Exception: raise HTTPException(status_code=401, detail="Invalid token") @router.get("/email_senders") async def get_email_senders(tenant_id: str = Depends(get_current_tenant_id)): return await email_sender_service.get_email_sender(tenant_id) @router.post("/email_sender/set") async def set_email_senders( email_senders: list[str], tenant_id: str = Depends(get_current_tenant_id) ): return await email_sender_service.set_email_sender(tenant_id, email_senders) @router.post("/email_senders/add") async def add_email_senders( new_senders: list[str], tenant_id: str = Depends(get_current_tenant_id) ): return await email_sender_service.add_email_senders(tenant_id, new_senders) @router.delete("/email_senders/remove") async def remove_email_senders( emails_to_remove: list[str], tenant_id: str = Depends(get_current_tenant_id) ): return await email_sender_service.remove_email_senders(tenant_id, emails_to_remove) @router.delete("/email_senders/clear") async def clear_email_senders(tenant_id: str = Depends(get_current_tenant_id)): return await email_sender_service.clear_email_senders(tenant_id) @router.delete("/email_senders/delete") async def delete_email_sender(tenant_id: str = Depends(get_current_tenant_id)): return await email_sender_service.delete_email_sender(tenant_id)