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 == "" {
|
if v == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
r, err := GetRoleByName(v)
|
id, err := strconv.Atoi(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return errors.WithStack(err)
|
||||||
}
|
}
|
||||||
item.Value = strconv.Itoa(int(r.ID))
|
_, err = GetRole(uint(id))
|
||||||
return nil
|
return err
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,9 +19,12 @@ func getRoleOptions() string {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
names := make([]string, len(roles))
|
names := make([]string, 0, len(roles))
|
||||||
for i, r := range roles {
|
for _, r := range roles {
|
||||||
names[i] = r.Name
|
if r.Name == "admin" || r.Name == "guest" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
names = append(names, r.Name)
|
||||||
}
|
}
|
||||||
return strings.Join(names, ",")
|
return strings.Join(names, ",")
|
||||||
}
|
}
|
||||||
|
@ -85,6 +88,22 @@ func SaveSettings(c *gin.Context) {
|
||||||
common.ErrorResp(c, err, 400)
|
common.ErrorResp(c, err, 400)
|
||||||
return
|
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 {
|
if err := op.SaveSettingItems(req); err != nil {
|
||||||
common.ErrorResp(c, err, 500)
|
common.ErrorResp(c, err, 500)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in New Issue