From 998022e38be0de08e709a00f9769e8e22b0eaa81 Mon Sep 17 00:00:00 2001 From: okatu-loli Date: Sun, 21 Dec 2025 15:23:12 +0800 Subject: [PATCH] feat(settings): Add `SetToken` endpoint for updating token settings - Introduced `SetToken` handler to allow manual token updates via API - Added `SetTokenReq` struct for request validation --- server/handles/setting.go | 21 ++++++++++++++++++++- server/router.go | 1 + 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/server/handles/setting.go b/server/handles/setting.go index e0dbb490..f209b7c5 100644 --- a/server/handles/setting.go +++ b/server/handles/setting.go @@ -29,9 +29,13 @@ func getRoleOptions() string { return strings.Join(names, ",") } +type SetTokenReq struct { + Token string `json:"token" form:"token" binding:"required"` +} + func ResetToken(c *gin.Context) { token := random.Token() - item := model.SettingItem{Key: "token", Value: token, Type: conf.TypeString, Group: model.SINGLE, Flag: model.PRIVATE} + item := model.SettingItem{Key: conf.Token, Value: token, Type: conf.TypeString, Group: model.SINGLE, Flag: model.PRIVATE} if err := op.SaveSettingItem(&item); err != nil { common.ErrorResp(c, err, 500) return @@ -40,6 +44,21 @@ func ResetToken(c *gin.Context) { common.SuccessResp(c, token) } +func SetToken(c *gin.Context) { + var req SetTokenReq + if err := c.ShouldBind(&req); err != nil { + common.ErrorResp(c, err, 400) + return + } + item := model.SettingItem{Key: conf.Token, Value: req.Token, Type: conf.TypeString, Group: model.SINGLE, Flag: model.PRIVATE} + if err := op.SaveSettingItem(&item); err != nil { + common.ErrorResp(c, err, 500) + return + } + sign.Instance() + common.SuccessResp(c, req.Token) +} + func GetSetting(c *gin.Context) { key := c.Query("key") keys := c.Query("keys") diff --git a/server/router.go b/server/router.go index 4d79c1fd..63503838 100644 --- a/server/router.go +++ b/server/router.go @@ -154,6 +154,7 @@ func admin(g *gin.RouterGroup) { setting.POST("/save", handles.SaveSettings) setting.POST("/delete", handles.DeleteSetting) setting.POST("/reset_token", handles.ResetToken) + setting.POST("/set_token", handles.SetToken) setting.POST("/set_aria2", handles.SetAria2) setting.POST("/set_qbit", handles.SetQbittorrent) setting.POST("/set_transmission", handles.SetTransmission)