feat: improve multi-user permission controls

This commit is contained in:
OpenClaw Agent
2026-09-22 02:02:10 +08:00
parent 29c528ed5a
commit d738fa41a3
3 changed files with 27 additions and 10 deletions
+12 -1
View File
@@ -168,7 +168,18 @@ func (u *UserStore) Update(m *Manager, username, password string, enabled *bool,
a.Enabled = *enabled
}
if rules != nil {
a.Rules = rules
// A managed user's home is always their private working area. Keep the
// base RWD rule even when an administrator replaces the extra rules.
// Additional rules can grant or deny access elsewhere.
next := make([]PathRule, 0, len(rules)+1)
next = append(next, PathRule{Dir: a.Home, Mask: Read | Write | Delete})
for _, rule := range rules {
if strings.Trim(rule.Dir, "/") == strings.Trim(a.Home, "/") {
continue
}
next = append(next, rule)
}
a.Rules = next
}
return u.Save(m)
}