aboutsummaryrefslogtreecommitdiff
path: root/hotline/server.go
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2022-06-04 20:14:16 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2022-06-04 20:14:16 -0700
commitd2810ae9038b057e8f18e8b495a57d8f96ae5be6 (patch)
treef5cd374e2b2a782b1513f51cc7a72a5b8b8d0abc /hotline/server.go
parentd8e28ebc452ef2ebab2846451ce5589e028c5783 (diff)
Implement multi-account edit
Diffstat (limited to 'hotline/server.go')
-rw-r--r--hotline/server.go32
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()