diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-06-04 20:14:16 -0700 |
|---|---|---|
| committer | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-06-04 20:14:16 -0700 |
| commit | d2810ae9038b057e8f18e8b495a57d8f96ae5be6 (patch) | |
| tree | f5cd374e2b2a782b1513f51cc7a72a5b8b8d0abc /hotline/server.go | |
| parent | d8e28ebc452ef2ebab2846451ce5589e028c5783 (diff) | |
Implement multi-account edit
Diffstat (limited to 'hotline/server.go')
| -rw-r--r-- | hotline/server.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/hotline/server.go b/hotline/server.go index 0828385..aebff6e 100644 --- a/hotline/server.go +++ b/hotline/server.go @@ -359,6 +359,38 @@ func (s *Server) NewUser(login, name, password string, access []byte) error { return FS.WriteFile(s.ConfigDir+"Users/"+login+".yaml", out, 0666) } +func (s *Server) UpdateUser(login, newLogin, name, password string, access []byte) error { + s.mux.Lock() + defer s.mux.Unlock() + + fmt.Printf("login: %v, newLogin: %v: ", login, newLogin) + + // update renames the user login + if login != newLogin { + err := os.Rename(s.ConfigDir+"Users/"+login+".yaml", s.ConfigDir+"Users/"+newLogin+".yaml") + if err != nil { + return err + } + s.Accounts[newLogin] = s.Accounts[login] + 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(s.ConfigDir+"Users/"+newLogin+".yaml", out, 0666); err != nil { + return err + } + + return nil +} + // DeleteUser deletes the user account func (s *Server) DeleteUser(login string) error { s.mux.Lock() |