diff --git a/cmd/sts.go b/cmd/sts.go index 76b9f800..075e49e4 100644 --- a/cmd/sts.go +++ b/cmd/sts.go @@ -29,6 +29,7 @@ func STSCommand(cli *di.Deps) *cobra.Command { cmd.AddCommand(TopicCommand(cli)) cmd.AddCommand(TopologySyncCommand(cli)) cmd.AddCommand(AgentCommand(cli)) + cmd.AddCommand(UserSessionCommand(cli)) return cmd } diff --git a/cmd/usersession.go b/cmd/usersession.go new file mode 100644 index 00000000..bc98b68b --- /dev/null +++ b/cmd/usersession.go @@ -0,0 +1,17 @@ +package cmd + +import ( + "github.com/spf13/cobra" + "github.com/stackvista/stackstate-cli/cmd/usersession" + "github.com/stackvista/stackstate-cli/internal/di" +) + +func UserSessionCommand(deps *di.Deps) *cobra.Command { + cmd := &cobra.Command{ + Use: "user-session", + Short: "Inspect user session", + Long: "Inspect user session.", + } + cmd.AddCommand(usersession.GetUserSessionRolesCommand(deps)) + return cmd +} diff --git a/cmd/usersession/usersession_roles.go b/cmd/usersession/usersession_roles.go new file mode 100644 index 00000000..2461d362 --- /dev/null +++ b/cmd/usersession/usersession_roles.go @@ -0,0 +1,38 @@ +package usersession + +import ( + "github.com/spf13/cobra" + "github.com/stackvista/stackstate-cli/generated/stackstate_api" + "github.com/stackvista/stackstate-cli/internal/common" + "github.com/stackvista/stackstate-cli/internal/di" +) + +func GetUserSessionRolesCommand(cli *di.Deps) *cobra.Command { + cmd := &cobra.Command{ + Use: "roles", + Short: "Get user roles", + Long: "Get roles for current user session.", + RunE: cli.CmdRunEWithApi(RunUserSessionRolesCommand), + } + + return cmd +} + +func RunUserSessionRolesCommand(cmd *cobra.Command, cli *di.Deps, api *stackstate_api.APIClient, serverInfo *stackstate_api.ServerInfo) common.CLIError { + roles, resp, err := api.UserSessionApi.GetUserSessionAvailableRoles(cli.Context).Execute() + if err != nil { + return common.NewResponseError(err, resp) + } + + if cli.IsJson() { + cli.Printer.PrintJson(map[string]interface{}{ + "roles": roles.Roles, + }) + } else { + for _, role := range roles.Roles { + cli.Printer.PrintLn(role) + } + } + + return nil +} diff --git a/cmd/usersession/usersession_roles_test.go b/cmd/usersession/usersession_roles_test.go new file mode 100644 index 00000000..3e547c13 --- /dev/null +++ b/cmd/usersession/usersession_roles_test.go @@ -0,0 +1 @@ +package usersession