42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
"github.com/crusttech/crust/internal/settings"
|
|
"github.com/crusttech/crust/system/internal/auth/external"
|
|
)
|
|
|
|
// Will perform OpenID connect auto-configuration
|
|
func externalAuthCmd(ctx context.Context, settingsService settings.Service) *cobra.Command {
|
|
cmd := &cobra.Command{
|
|
Use: "external-auth",
|
|
Short: "External authentication",
|
|
}
|
|
|
|
autoDiscoverCmd := &cobra.Command{
|
|
Use: "auto-discovery [name] [url]",
|
|
Short: "Auto discovers new OIDC client",
|
|
Args: cobra.ExactArgs(2),
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
var name, url = args[0], args[1]
|
|
|
|
if eas, err := external.ExternalAuthSettings(settingsService); err != nil {
|
|
exit(cmd, err)
|
|
} else if eap, err := external.RegisterNewOpenIdClient(ctx, eas, name, url); err != nil {
|
|
exit(cmd, err)
|
|
} else if vv, err := eap.MakeValueSet("openid-connect." + name); err != nil {
|
|
exit(cmd, err)
|
|
} else if err := settingsService.BulkSet(vv); err != nil {
|
|
exit(cmd, err)
|
|
}
|
|
},
|
|
}
|
|
|
|
cmd.AddCommand(autoDiscoverCmd)
|
|
|
|
return cmd
|
|
}
|