info.go

 1package cmd
 2
 3import (
 4	"github.com/charmbracelet/soft-serve/server/auth"
 5	"github.com/charmbracelet/soft-serve/server/sshutils"
 6	"github.com/spf13/cobra"
 7)
 8
 9func infoCommand() *cobra.Command {
10	cmd := &cobra.Command{
11		Use:   "info",
12		Short: "Show your info",
13		Args:  cobra.NoArgs,
14		RunE: func(cmd *cobra.Command, args []string) error {
15			ctx := cmd.Context()
16			be, s := fromContext(cmd)
17			user, err := be.Authenticate(ctx, auth.NewPublicKey(s.PublicKey()))
18			if err != nil {
19				return err
20			}
21
22			cmd.Printf("Username: %s\n", user.Username())
23			cmd.Printf("Admin: %t\n", user.IsAdmin())
24			cmd.Printf("Public keys:\n")
25			for _, pk := range user.PublicKeys() {
26				cmd.Printf("  %s\n", sshutils.MarshalAuthorizedKey(pk))
27			}
28			return nil
29		},
30	}
31
32	return cmd
33}