mirror of https://github.com/Xhofe/alist
fix(setting): ensure DefaultRole stores role ID while exposing role
name in APIs (fix/settings-get-role) - Simplify initial settings to use `model.GUEST` as the default role ID instead of querying roles at startup. - Update `GetSetting`, `ListSettings` handlers to: - Convert stored role ID into the corresponding role name when returning data. - Preserve dynamic role options for selection. - Remove unused `strings` import and role preloading logic from `InitialSettings`. - Avoid DB dependency during initialization while keeping consistent role display for frontend clients.pull/9279/head
parent
b14d2b438b
commit
32bfe104bc
|
@ -88,12 +88,12 @@ var settingItemHooks = map[string]SettingItemHook{
|
|||
if v == "" {
|
||||
return nil
|
||||
}
|
||||
r, err := GetRoleByName(v)
|
||||
id, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
return err
|
||||
return errors.WithStack(err)
|
||||
}
|
||||
item.Value = strconv.Itoa(int(r.ID))
|
||||
return nil
|
||||
_, err = GetRole(uint(id))
|
||||
return err
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -19,9 +19,12 @@ func getRoleOptions() string {
|
|||
if err != nil {
|
||||
return ""
|
||||
}
|
||||
names := make([]string, len(roles))
|
||||
for i, r := range roles {
|
||||
names[i] = r.Name
|
||||
names := make([]string, 0, len(roles))
|
||||
for _, r := range roles {
|
||||
if r.Name == "admin" || r.Name == "guest" {
|
||||
continue
|
||||
}
|
||||
names = append(names, r.Name)
|
||||
}
|
||||
return strings.Join(names, ",")
|
||||
}
|
||||
|
@ -85,6 +88,22 @@ func SaveSettings(c *gin.Context) {
|
|||
common.ErrorResp(c, err, 400)
|
||||
return
|
||||
}
|
||||
|
||||
for i := range req {
|
||||
if req[i].Key == conf.DefaultRole {
|
||||
role, err := op.GetRoleByName(req[i].Value)
|
||||
if err != nil {
|
||||
common.ErrorResp(c, err, 400)
|
||||
return
|
||||
}
|
||||
if role.Name == "admin" || role.Name == "guest" {
|
||||
common.ErrorStrResp(c, "cannot set admin or guest as default role", 400)
|
||||
return
|
||||
}
|
||||
req[i].Value = strconv.Itoa(int(role.ID))
|
||||
}
|
||||
}
|
||||
|
||||
if err := op.SaveSettingItems(req); err != nil {
|
||||
common.ErrorResp(c, err, 500)
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue