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
This commit is contained in:
okatu-loli 2025-12-21 15:23:12 +08:00
parent b4d9beb49c
commit 998022e38b
2 changed files with 21 additions and 1 deletions

View File

@ -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")

View File

@ -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)