Browse Source

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 years ago
parent
commit
d8d41a9729
No known key found for this signature in database GPG Key ID: D6F1633A4F0903B8
1 changed files with 43 additions and 0 deletions
  1. +43
    -0
      cmd/wf/commands.go

+ 43
- 0
cmd/wf/commands.go View File

@@ -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 {


Loading…
Cancel
Save