diff --git a/cmd/register.go b/cmd/register.go index de26f63..ac75906 100644 --- a/cmd/register.go +++ b/cmd/register.go @@ -35,12 +35,21 @@ import ( var registerCmd = &cobra.Command{ Use: "register", Short: "registers DEX client", - Long: `Registers dex client fot openID purposes`, + Long: `Registers dex client for openID purposes`, Run: func(cmd *cobra.Command, args []string) { registerDexClient() }, } +var deleteCmd = &cobra.Command{ + Use: "delete", + Short: "deletes DEX client", + Long: `Deletes dex client for openID purposes`, + Run: func(cmd *cobra.Command, args []string) { + deleteDexClient() + }, +} + var host string var port int var caPath string @@ -52,21 +61,22 @@ var redirectUris []string func init() { rootCmd.AddCommand(registerCmd) + rootCmd.AddCommand(deleteCmd) + + rootCmd.PersistentFlags().StringVarP(&host, "address", "a", "localhost", "Hostname address to connect to") + _ = rootCmd.MarkFlagRequired("address") + rootCmd.PersistentFlags().IntVarP(&port, "port", "p", 5557, "Host port to connect to") + _ = rootCmd.MarkFlagRequired("port") + rootCmd.PersistentFlags().StringVarP(&caPath, "cacertpath", "t", "/etc/dex/ca.crt", "Path to client CA cert to connect to") + _ = rootCmd.MarkFlagRequired("cacertpath") + rootCmd.PersistentFlags().StringVarP(&clientCert, "clientCert", "e", "", "Path to client cert for mTLS") + rootCmd.PersistentFlags().StringVarP(&clientKey, "clientKey", "k", "", "Path to client key for mTLS") + rootCmd.PersistentFlags().StringVarP(&clientId, "clientid", "c", "", "ClientID to register") + _ = registerCmd.MarkFlagRequired("clientid") // Cobra supports local flags which will only run when this command // is called directly, e.g.: // registerCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle") - registerCmd.Flags().StringVarP(&host, "address", "a", "localhost", "Hostname address to connect to") - _ = registerCmd.MarkFlagRequired("address") - registerCmd.Flags().IntVarP(&port, "port", "p", 5557, "Host port to connect to") - _ = registerCmd.MarkFlagRequired("port") - registerCmd.Flags().StringVarP(&caPath, "cacertpath", "t", "/etc/dex/ca.crt", "Path to client CA cert to connect to") - _ = registerCmd.MarkFlagRequired("cacertpath") - registerCmd.Flags().StringVarP(&clientCert, "clientCert", "e", "", "Path to client cert for mTLS") - registerCmd.Flags().StringVarP(&clientKey, "clientKey", "k", "", "Path to client key for mTLS") - - registerCmd.Flags().StringVarP(&clientId, "clientid", "c", "", "ClientID to register") - _ = registerCmd.MarkFlagRequired("clientid") registerCmd.Flags().StringVarP(&clientSecret, "clientsecret", "s", "", "ClientSecret to register") _ = registerCmd.MarkFlagRequired("clientsecret") registerCmd.Flags().StringArrayVarP(&redirectUris, "redirecturis", "r", nil, "RedirectURIs to register") @@ -145,3 +155,18 @@ func registerDexClient() { log.Fatalf("failed updating oauth2 client %v", err) } } + +func deleteDexClient() { + client, err := newDexClient(strings.Join([]string{host, strconv.Itoa(port)}, ":")) + if err != nil { + log.Fatalf("failed creating dex client: %v ", err) + } + + req := &api.DeleteClientReq{ + Id: clientId, + } + + if _, err := client.DeleteClient(context.TODO(), req); err != nil { + log.Fatalf("failed deleting dex client: %v ", err) + } +}