Rename cli command "external-auth" to "auth", move jwt subcmd
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
package cli
|
||||
|
||||
import (
|
||||
"context"
|
||||
"regexp"
|
||||
"strconv"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/titpetric/factory"
|
||||
|
||||
"github.com/crusttech/crust/internal/auth"
|
||||
"github.com/crusttech/crust/internal/settings"
|
||||
"github.com/crusttech/crust/system/internal/auth/external"
|
||||
"github.com/crusttech/crust/system/internal/repository"
|
||||
"github.com/crusttech/crust/system/types"
|
||||
)
|
||||
|
||||
// Will perform OpenID connect auto-configuration
|
||||
func authCmd(ctx context.Context, db *factory.DB, settingsService settings.Service) *cobra.Command {
|
||||
cmd := &cobra.Command{
|
||||
Use: "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)
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
jwtCmd := &cobra.Command{
|
||||
Use: "jwt [email-or-id]",
|
||||
Short: "Generates new JWT for a user",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var (
|
||||
userRepo = repository.User(ctx, db)
|
||||
roleRepo = repository.Role(ctx, db)
|
||||
// authSvc = service.Auth(ctx)
|
||||
|
||||
user *types.User
|
||||
err error
|
||||
ID uint64
|
||||
rr types.RoleSet
|
||||
|
||||
userStr = args[0]
|
||||
)
|
||||
|
||||
if user, err = userRepo.FindByEmail(userStr); repository.ErrUserNotFound.Eq(err) {
|
||||
if regexp.MustCompile(`/^\d+$/`).MatchString(userStr) {
|
||||
if ID, err = strconv.ParseUint(userStr, 10, 64); err == nil {
|
||||
user, err = userRepo.FindByID(ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
rr, err = roleRepo.FindByMemberID(user.ID)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
exit(cmd, err)
|
||||
}
|
||||
|
||||
user.SetRoles(rr.IDs())
|
||||
|
||||
cmd.Println(auth.DefaultJwtHandler.Encode(user))
|
||||
},
|
||||
}
|
||||
|
||||
cmd.AddCommand(autoDiscoverCmd, jwtCmd)
|
||||
|
||||
return cmd
|
||||
}
|
||||
+1
-1
@@ -21,7 +21,7 @@ func StartCLI(ctx context.Context) {
|
||||
|
||||
cmd.AddCommand(
|
||||
settingsCmd(ctx, settingsService),
|
||||
externalAuthCmd(ctx, settingsService),
|
||||
authCmd(ctx, db, settingsService),
|
||||
usersCmd(ctx, db),
|
||||
rolesCmd(ctx, db),
|
||||
)
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
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
|
||||
}
|
||||
@@ -3,15 +3,12 @@ package cli
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"syscall"
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/titpetric/factory"
|
||||
"golang.org/x/crypto/ssh/terminal"
|
||||
|
||||
"github.com/crusttech/crust/internal/auth"
|
||||
"github.com/crusttech/crust/system/internal/repository"
|
||||
"github.com/crusttech/crust/system/internal/service"
|
||||
"github.com/crusttech/crust/system/types"
|
||||
@@ -130,51 +127,10 @@ func usersCmd(ctx context.Context, db *factory.DB) *cobra.Command {
|
||||
},
|
||||
}
|
||||
|
||||
jwtCmd := &cobra.Command{
|
||||
Use: "jwt [email-or-id]",
|
||||
Short: "Generates new JWT for a user",
|
||||
Args: cobra.MinimumNArgs(1),
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
var (
|
||||
userRepo = repository.User(ctx, db)
|
||||
roleRepo = repository.Role(ctx, db)
|
||||
// authSvc = service.Auth(ctx)
|
||||
|
||||
user *types.User
|
||||
err error
|
||||
ID uint64
|
||||
rr types.RoleSet
|
||||
|
||||
userStr = args[0]
|
||||
)
|
||||
|
||||
if user, err = userRepo.FindByEmail(userStr); repository.ErrUserNotFound.Eq(err) {
|
||||
if regexp.MustCompile(`/^\d+$/`).MatchString(userStr) {
|
||||
if ID, err = strconv.ParseUint(userStr, 10, 64); err == nil {
|
||||
user, err = userRepo.FindByID(ID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
rr, err = roleRepo.FindByMemberID(user.ID)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
exit(cmd, err)
|
||||
}
|
||||
|
||||
user.SetRoles(rr.IDs())
|
||||
|
||||
cmd.Println(auth.DefaultJwtHandler.Encode(user))
|
||||
},
|
||||
}
|
||||
|
||||
cmd.AddCommand(
|
||||
listCmd,
|
||||
addCmd,
|
||||
pwdCmd,
|
||||
jwtCmd,
|
||||
)
|
||||
|
||||
return cmd
|
||||
|
||||
Reference in New Issue
Block a user