From 4a15207b0aa64fbc62a275ea336a20a9ad8448d5 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Fri, 1 Aug 2025 15:07:43 +0200 Subject: [PATCH] Hierarchical tokens in galenectl. --- galenectl/galenectl.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/galenectl/galenectl.go b/galenectl/galenectl.go index 629d88b..46ed30c 100644 --- a/galenectl/galenectl.go +++ b/galenectl/galenectl.go @@ -1060,6 +1060,9 @@ func listTokensCmd(cmdname string, args []string) { exp = tt.Expires.Format(time.DateTime) } var perms []byte + if tt.IncludeSubgroups { + perms = append(perms, 'H') + } for _, p := range tt.Permissions { if len(p) > 0 { perms = append(perms, p[0]) @@ -1070,7 +1073,7 @@ func listTokensCmd(cmdname string, args []string) { sort.Slice(perms, func(i, j int) bool { return perms[i] < perms[j] }) - fmt.Printf("%-11s %-12s %-4s %-20s\n", t, + fmt.Printf("%-11s %-20s %-4s %-20s\n", t, username, perms, exp, ) } @@ -1079,11 +1082,14 @@ func listTokensCmd(cmdname string, args []string) { func createTokenCmd(cmdname string, args []string) { var groupname, username, permissions string + var includeSubgroups bool cmd := flag.NewFlagSet(cmdname, flag.ExitOnError) setUsage(cmd, cmdname, "%v [option...] %v [option...]\n", os.Args[0], cmdname, ) cmd.StringVar(&groupname, "group", "", "group `name`") + cmd.BoolVar(&includeSubgroups, "include-subgroups", false, + "include subgroups") cmd.StringVar(&username, "user", "", "encode user `name` in token") cmd.StringVar(&permissions, "permissions", "present", "permissions") cmd.Parse(args) @@ -1109,6 +1115,9 @@ func createTokenCmd(cmdname string, args []string) { if username != "" { t["username"] = username } + if includeSubgroups { + t["includeSubgroups"] = true + } u, err := url.JoinPath( serverURL, "/galene-api/v0/.groups/", groupname, ".tokens/",