Bläddra i källkod

check for any logged in user when no flag passed

this adds a check for any logged in users on any host when neither the
user or host flag are passed and not default pair is configured
pull/36/head
Rob Loranger 4 år sedan
förälder
incheckning
d8d41a9729
Ingen känd nyckel hittad för denna signaturen i databasen GPG-nyckel ID: D6F1633A4F0903B8
1 ändrade filer med 43 tillägg och 0 borttagningar
  1. +43
    -0
      cmd/wf/commands.go

+ 43
- 0
cmd/wf/commands.go Visa fil

@@ -48,6 +48,14 @@ func requireAuth(f cli.ActionFunc, action string) cli.ActionFunc {
if err != nil {
return cli.NewExitError(fmt.Sprintf("Failed to set user from global config: %v", err), 1)
}
} else {
num, err := totalUsersLoggedIn(c)
if err != nil {
return cli.NewExitError(fmt.Sprintf("Failed to check for logged in users: %v", err), 1)
} else if num > 0 {
return cli.NewExitError("You are authenticated, but have no default user/host set. Supply -user and -host flags.", 1)
}
fmt.Println(num)
}
}
u, err := config.LoadUser(c)
@@ -89,6 +97,41 @@ func usersLoggedIn(c *cli.Context) (int, []string, error) {
return len(names), names, nil
}

// totalUsersLoggedIn checks for logged in users for any host
// it returns the number of users and an error if any
func totalUsersLoggedIn(c *cli.Context) (int, error) {
path := config.UserDataDir(c.App.ExtraInfo()["configDir"])
dir, err := os.Open(path)
if err != nil {
return 0, err
}
contents, err := dir.Readdir(0)
if err != nil {
return 0, err
}
count := 0
for _, file := range contents {
if file.IsDir() {
subDir, err := os.Open(filepath.Join(path, file.Name()))
if err != nil {
return 0, err
}
subContents, err := subDir.Readdir(0)
if err != nil {
return 0, err
}
for _, subFile := range subContents {
if subFile.IsDir() {
if _, err := os.Stat(filepath.Join(path, file.Name(), subFile.Name(), "user.json")); err == nil {
count++
}
}
}
}
}
return count, nil
}

func cmdAuth(c *cli.Context) error {
err := commands.CmdAuth(c)
if err != nil {


Laddar…
Avbryt
Spara