feat(settings): add SMTP admin configuration
This commit is contained in:
parent
c58e212e3a
commit
884a20e043
32 changed files with 1200 additions and 42 deletions
67
backend/hermes/app/api/system_settings.py
Normal file
67
backend/hermes/app/api/system_settings.py
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from starlette.requests import Request
|
||||
|
||||
from app.core.rbac import require_permission
|
||||
from app.db.database import get_db
|
||||
from app.models.user import User
|
||||
from app.schemas.system_setting import (
|
||||
PublicLinksSettingsResponse,
|
||||
PublicLinksSettingsUpdate,
|
||||
SmtpSettingsResponse,
|
||||
SmtpSettingsUpdate,
|
||||
SmtpTestRequest,
|
||||
SmtpTestResponse,
|
||||
)
|
||||
from app.services.system_settings_service import SystemSettingsService
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/system-settings",
|
||||
tags=["System Settings"],
|
||||
)
|
||||
|
||||
|
||||
@router.get("/smtp", response_model=SmtpSettingsResponse)
|
||||
def get_smtp_settings(
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(require_permission("system_settings.manage")),
|
||||
):
|
||||
return SystemSettingsService.get_smtp_settings(db)
|
||||
|
||||
|
||||
@router.put("/smtp", response_model=SmtpSettingsResponse)
|
||||
def update_smtp_settings(
|
||||
payload: SmtpSettingsUpdate,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(require_permission("system_settings.manage")),
|
||||
):
|
||||
return SystemSettingsService.update_smtp_settings(db, payload, actor=current_user, request=request)
|
||||
|
||||
|
||||
@router.post("/smtp/test", response_model=SmtpTestResponse)
|
||||
def send_smtp_test_mail(
|
||||
payload: SmtpTestRequest,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(require_permission("system_settings.manage")),
|
||||
):
|
||||
return SystemSettingsService.send_test_mail(db, payload.recipient, actor=current_user, request=request)
|
||||
|
||||
|
||||
@router.get("/public-links", response_model=PublicLinksSettingsResponse)
|
||||
def get_public_links_settings(
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(require_permission("system_settings.manage")),
|
||||
):
|
||||
return SystemSettingsService.get_public_links_settings(db)
|
||||
|
||||
|
||||
@router.put("/public-links", response_model=PublicLinksSettingsResponse)
|
||||
def update_public_links_settings(
|
||||
payload: PublicLinksSettingsUpdate,
|
||||
request: Request,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(require_permission("system_settings.manage")),
|
||||
):
|
||||
return SystemSettingsService.update_public_links_settings(db, payload, actor=current_user, request=request)
|
||||
Loading…
Add table
Add a link
Reference in a new issue