67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
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)
|