46 lines
1012 B
Go
46 lines
1012 B
Go
package handlers
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
|
|
"0451meishiditu/backend/internal/resp"
|
|
"0451meishiditu/backend/internal/settings"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
type corsUpdateReq struct {
|
|
Origins []string `json:"origins" binding:"required"`
|
|
}
|
|
|
|
func (h *Handlers) SettingsGetCORS(c *gin.Context) {
|
|
resp.OK(c, gin.H{"origins": h.st.CORSAllowOrigins()})
|
|
}
|
|
|
|
func (h *Handlers) SettingsUpdateCORS(c *gin.Context) {
|
|
var req corsUpdateReq
|
|
if err := c.ShouldBindJSON(&req); err != nil {
|
|
resp.Fail(c, http.StatusBadRequest, "invalid payload")
|
|
return
|
|
}
|
|
var cleaned []string
|
|
for _, o := range req.Origins {
|
|
v := strings.TrimSpace(o)
|
|
if v != "" {
|
|
cleaned = append(cleaned, v)
|
|
}
|
|
}
|
|
if len(cleaned) == 0 {
|
|
resp.Fail(c, http.StatusBadRequest, "origins required")
|
|
return
|
|
}
|
|
|
|
if err := settings.UpsertCORSAllowOrigins(h.db, cleaned); err != nil {
|
|
resp.Fail(c, http.StatusInternalServerError, "update failed")
|
|
return
|
|
}
|
|
h.st.SetCORSAllowOrigins(cleaned)
|
|
resp.OK(c, gin.H{"updated": true})
|
|
}
|