aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoni Sawicki <tenox@google.com>2022-03-27 01:03:57 -0700
committerAntoni Sawicki <tenox@google.com>2022-03-27 01:03:57 -0700
commit55287873ae5c3b5339d1c33bb6592055c386030f (patch)
treee8f3355495fdf63e3f2957a64da1925eb35042d7
parenteb9bf1696e1ba29a4ca652fd8a6692f87c561a7c (diff)
downloadwfm-55287873ae5c3b5339d1c33bb6592055c386030f.tar.gz
add delete user
-rw-r--r--users.go43
1 files changed, 28 insertions, 15 deletions
diff --git a/users.go b/users.go
index b72843f..ea88443 100644
--- a/users.go
+++ b/users.go
@@ -33,12 +33,27 @@ func loadUsers() {
log.Printf("Loaded %q (%d users)", *passwdDb, len(users))
}
+func saveUsers() {
+ u, err := json.Marshal(users)
+ if err != nil {
+ log.Fatal(err)
+ }
+ // TODO: pretty format file
+ err = ioutil.WriteFile(*passwdDb, u, 600)
+ if err != nil {
+ log.Fatal(err)
+ }
+ log.Printf("Saved %q (%v users)", *passwdDb, len(users))
+}
+
func manageUsers() {
switch flag.Arg(1) {
case "list":
listUsers()
case "add":
addUser(flag.Arg(2), flag.Arg(3))
+ case "delete":
+ delUser(flag.Arg(2))
default:
fmt.Println("usage: user <list|add|delete|passwd|setrw|setro> [username] [rw|ro]")
}
@@ -55,13 +70,8 @@ func addUser(usr, rw string) {
log.Fatal("user add requires username and ro/rw\n")
}
var bRW bool
- switch rw {
- case "ro":
- bRW = false
- case "rw":
+ if rw == "rw" {
bRW = true
- default:
- log.Fatal("Access must be 'ro' or 'rw' only.")
}
fmt.Print("Password: ")
@@ -69,17 +79,20 @@ func addUser(usr, rw string) {
fmt.Scanln(&pwd)
salt := rndStr(8)
hash := fmt.Sprintf("%x", sha256.Sum256([]byte(salt+pwd)))
- fmt.Printf("New Usr=%q Salt=%q Pwd=%q Hash=%q Rw=%v\n", usr, salt, pwd, hash, bRW)
users = append(users, userDB{User: usr, Salt: salt, Hash: hash, RW: bRW})
- fmt.Printf("users=%#v\n", users)
- u, err := json.Marshal(users)
- if err != nil {
- log.Fatal(err)
- }
- err = ioutil.WriteFile(*passwdDb, u, 600)
- if err != nil {
- log.Fatal(err)
+ saveUsers()
+}
+
+func delUser(usr string) {
+ var udb []userDB
+ for _, u := range users {
+ if u.User == usr {
+ continue
+ }
+ udb = append(udb, u)
}
+ users = udb
+ saveUsers()
}
func rndStr(len int) string {