Implement global tokens in galenectl.

This commit is contained in:
Juliusz Chroboczek
2025-08-12 21:28:44 +02:00
parent 164bedc73d
commit 377f32bd0b
+19 -16
View File
@@ -1231,13 +1231,13 @@ func listGroupsCmd(cmdname string, args []string) {
} }
func listTokensCmd(cmdname string, args []string) { func listTokensCmd(cmdname string, args []string) {
var groupname string var groupname stringOption
var long bool var long bool
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError) cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
setUsage(cmd, cmdname, "%v [option...] %v [option...]\n", setUsage(cmd, cmdname, "%v [option...] %v [option...]\n",
os.Args[0], cmdname, os.Args[0], cmdname,
) )
cmd.StringVar(&groupname, "group", "", "group `name`") cmd.Var(&groupname, "group", "group `name`")
cmd.BoolVar(&long, "l", false, "display token fields") cmd.BoolVar(&long, "l", false, "display token fields")
cmd.Parse(args) cmd.Parse(args)
@@ -1246,14 +1246,14 @@ func listTokensCmd(cmdname string, args []string) {
os.Exit(1) os.Exit(1)
} }
if groupname == "" { if !groupname.set {
fmt.Fprintf(cmd.Output(), fmt.Fprintf(cmd.Output(),
"Option \"-group\" is required\n") "Option \"-group\" is required\n")
os.Exit(1) os.Exit(1)
} }
u, err := url.JoinPath( u, err := url.JoinPath(
serverURL, "/galene-api/v0/.groups/", groupname, ".tokens/", serverURL, "/galene-api/v0/.groups/", groupname.value, ".tokens/",
) )
if err != nil { if err != nil {
@@ -1318,13 +1318,14 @@ func listTokensCmd(cmdname string, args []string) {
} }
func createTokenCmd(cmdname string, args []string) { func createTokenCmd(cmdname string, args []string) {
var groupname, username, permissions string var groupname stringOption
var username, permissions string
var includeSubgroups bool var includeSubgroups bool
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError) cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
setUsage(cmd, cmdname, "%v [option...] %v [option...]\n", setUsage(cmd, cmdname, "%v [option...] %v [option...]\n",
os.Args[0], cmdname, os.Args[0], cmdname,
) )
cmd.StringVar(&groupname, "group", "", "group `name`") cmd.Var(&groupname, "group", "group `name`")
cmd.BoolVar(&includeSubgroups, "include-subgroups", false, cmd.BoolVar(&includeSubgroups, "include-subgroups", false,
"include subgroups") "include subgroups")
cmd.StringVar(&username, "user", "", "encode user `name` in token") cmd.StringVar(&username, "user", "", "encode user `name` in token")
@@ -1336,7 +1337,7 @@ func createTokenCmd(cmdname string, args []string) {
os.Exit(1) os.Exit(1)
} }
if groupname == "" { if !groupname.set {
fmt.Fprintf(cmd.Output(), fmt.Fprintf(cmd.Output(),
"Option \"-group\" is required\n") "Option \"-group\" is required\n")
os.Exit(1) os.Exit(1)
@@ -1357,7 +1358,7 @@ func createTokenCmd(cmdname string, args []string) {
} }
u, err := url.JoinPath( u, err := url.JoinPath(
serverURL, "/galene-api/v0/.groups/", groupname, ".tokens/", serverURL, "/galene-api/v0/.groups/", groupname.value, ".tokens/",
) )
if err != nil { if err != nil {
log.Fatalf("Build URL: %v", err) log.Fatalf("Build URL: %v", err)
@@ -1371,12 +1372,13 @@ func createTokenCmd(cmdname string, args []string) {
} }
func revokeTokenCmd(cmdname string, args []string) { func revokeTokenCmd(cmdname string, args []string) {
var groupname, token string var groupname stringOption
var token string
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError) cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
setUsage(cmd, cmdname, "%v [option...] %v [option...]\n", setUsage(cmd, cmdname, "%v [option...] %v [option...]\n",
os.Args[0], cmdname, os.Args[0], cmdname,
) )
cmd.StringVar(&groupname, "group", "", "group `name`") cmd.Var(&groupname, "group", "group `name`")
cmd.StringVar(&token, "token", "", "`token` to delete") cmd.StringVar(&token, "token", "", "`token` to delete")
cmd.Parse(args) cmd.Parse(args)
@@ -1385,14 +1387,14 @@ func revokeTokenCmd(cmdname string, args []string) {
os.Exit(1) os.Exit(1)
} }
if groupname == "" || token == "" { if !groupname.set || token == "" {
fmt.Fprintf(cmd.Output(), fmt.Fprintf(cmd.Output(),
"Options \"-group\" and \"-token\" are required\n") "Options \"-group\" and \"-token\" are required\n")
os.Exit(1) os.Exit(1)
} }
u, err := url.JoinPath( u, err := url.JoinPath(
serverURL, "/galene-api/v0/.groups/", groupname, serverURL, "/galene-api/v0/.groups/", groupname.value,
".tokens", token, ".tokens", token,
) )
if err != nil { if err != nil {
@@ -1409,12 +1411,13 @@ func revokeTokenCmd(cmdname string, args []string) {
} }
func deleteTokenCmd(cmdname string, args []string) { func deleteTokenCmd(cmdname string, args []string) {
var groupname, token string var groupname stringOption
var token string
cmd := flag.NewFlagSet(cmdname, flag.ExitOnError) cmd := flag.NewFlagSet(cmdname, flag.ExitOnError)
setUsage(cmd, cmdname, "%v [option...] %v [option...]\n", setUsage(cmd, cmdname, "%v [option...] %v [option...]\n",
os.Args[0], cmdname, os.Args[0], cmdname,
) )
cmd.StringVar(&groupname, "group", "", "group `name`") cmd.Var(&groupname, "group", "group `name`")
cmd.StringVar(&token, "token", "", "`token` to delete") cmd.StringVar(&token, "token", "", "`token` to delete")
cmd.Parse(args) cmd.Parse(args)
@@ -1423,14 +1426,14 @@ func deleteTokenCmd(cmdname string, args []string) {
os.Exit(1) os.Exit(1)
} }
if groupname == "" || token == "" { if !groupname.set || token == "" {
fmt.Fprintf(cmd.Output(), fmt.Fprintf(cmd.Output(),
"Options \"-group\" and \"-token\" are required\n") "Options \"-group\" and \"-token\" are required\n")
os.Exit(1) os.Exit(1)
} }
u, err := url.JoinPath( u, err := url.JoinPath(
serverURL, "/galene-api/v0/.groups/", groupname, serverURL, "/galene-api/v0/.groups/", groupname.value,
".tokens", token, ".tokens", token,
) )
if err != nil { if err != nil {