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}