Add auto-enable to OIDC auto-discovery command

Auth auto-discovery command can now be called with --enable
switch to enable discovered provider AND entire external
auth
This commit is contained in:
Denis Arh
2019-05-28 20:50:05 +02:00
parent e338b0e2c1
commit bc64abca3f
+41 -8
View File
@@ -4,11 +4,13 @@ import (
"context"
"regexp"
"strconv"
"strings"
"github.com/spf13/cobra"
"github.com/titpetric/factory"
"github.com/cortezaproject/corteza-server/internal/auth"
"github.com/cortezaproject/corteza-server/internal/settings"
"github.com/cortezaproject/corteza-server/pkg/cli"
"github.com/cortezaproject/corteza-server/system/internal/auth/external"
"github.com/cortezaproject/corteza-server/system/internal/repository"
@@ -18,6 +20,10 @@ import (
// Will perform OpenID connect auto-configuration
func Auth(ctx context.Context) *cobra.Command {
var (
enableDiscoveredProvider bool
)
cmd := &cobra.Command{
Use: "auth",
Short: "External authentication",
@@ -30,18 +36,45 @@ func Auth(ctx context.Context) *cobra.Command {
Run: func(cmd *cobra.Command, args []string) {
var name, url = args[0], args[1]
if eas, err := external.ExternalAuthSettings(service.DefaultIntSettings); err != nil {
cli.HandleError(err)
} else if eap, err := external.RegisterNewOpenIdClient(ctx, eas, name, url); err != nil {
cli.HandleError(err)
} else if vv, err := eap.MakeValueSet("openid-connect." + name); err != nil {
cli.HandleError(err)
} else if err := service.DefaultIntSettings.BulkSet(vv); err != nil {
cli.HandleError(err)
eas, err := external.ExternalAuthSettings(service.DefaultIntSettings)
cli.HandleError(err)
eap, err := external.RegisterNewOpenIdClient(ctx, eas, name, url)
cli.HandleError(err)
vv, err := eap.MakeValueSet("openid-connect." + name)
cli.HandleError(err)
if enableDiscoveredProvider {
cli.HandleError(vv.Walk(func(value *settings.Value) error {
if strings.HasSuffix(value.Name, ".enabled") {
return value.SetValue(true)
}
return nil
}))
v := &settings.Value{Name: "auth.external.enabled"}
cli.HandleError(v.SetValue(true))
vv = append(vv, v)
}
cli.HandleError(service.DefaultIntSettings.BulkSet(vv))
if enableDiscoveredProvider {
cmd.Printf("OIDC provider successfully added and enabled.")
} else {
cmd.Printf("OIDC provider successfully added (still disabled).")
}
},
}
autoDiscoverCmd.Flags().BoolVar(
&enableDiscoveredProvider,
"enable",
false,
"Enable this provider and external auth")
jwtCmd := &cobra.Command{
Use: "jwt [email-or-id]",
Short: "Generates new JWT for a user",