+ return nil
+}
+
+func (s *Server) UpdateUser(login, newLogin, name, password string, access accessBitmap) error {
+ s.mux.Lock()
+ defer s.mux.Unlock()
+
+ // update renames the user login
+ if login != newLogin {
+ err := os.Rename(filepath.Join(s.ConfigDir, "Users", path.Join("/", login)+".yaml"), filepath.Join(s.ConfigDir, "Users", path.Join("/", newLogin)+".yaml"))
+ if err != nil {
+ return fmt.Errorf("unable to rename account: %w", err)
+ }
+ s.Accounts[newLogin] = s.Accounts[login]
+ s.Accounts[newLogin].Login = newLogin
+ delete(s.Accounts, login)
+ }
+
+ account := s.Accounts[newLogin]
+ account.Access = access
+ account.Name = name
+ account.Password = password
+
+ out, err := yaml.Marshal(&account)
+ if err != nil {
+ return err
+ }
+
+ if err := os.WriteFile(filepath.Join(s.ConfigDir, "Users", newLogin+".yaml"), out, 0666); err != nil {
+ return err
+ }
+
+ return nil