create.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package access_token
  2. import (
  3. "time"
  4. "github.com/gravitl/netmaker/cli/functions"
  5. "github.com/gravitl/netmaker/schema"
  6. "github.com/spf13/cobra"
  7. )
  8. var accessTokenCreateCmd = &cobra.Command{
  9. Use: "create [token-name]",
  10. Short: "Create an access token",
  11. Long: `Create an access token for a user`,
  12. Args: cobra.ExactArgs(1),
  13. Run: func(cmd *cobra.Command, args []string) {
  14. userName, _ := cmd.Flags().GetString("user")
  15. expiresAt, _ := cmd.Flags().GetString("expires")
  16. accessToken := &schema.UserAccessToken{}
  17. accessToken.Name = args[0]
  18. accessToken.UserName = userName
  19. expTime := time.Now().Add(time.Hour * 24 * 365) // default to 1 year
  20. if expiresAt != "" {
  21. var err error
  22. expTime, err = time.Parse(time.RFC3339, expiresAt)
  23. if err != nil {
  24. cmd.PrintErrf("Invalid expiration time format. Please use RFC3339 format (e.g. 2024-01-01T00:00:00Z). Using default 1 year.\n")
  25. }
  26. }
  27. accessToken.ExpiresAt = expTime
  28. functions.PrettyPrint(functions.CreateAccessToken(accessToken))
  29. },
  30. }
  31. func init() {
  32. accessTokenCreateCmd.Flags().String("user", "", "Username to create token for")
  33. accessTokenCreateCmd.Flags().String("expires", "", "Expiration time for the token in RFC3339 format (e.g. 2024-01-01T00:00:00Z). Defaults to 1 year from now.")
  34. accessTokenCreateCmd.MarkFlagRequired("user")
  35. rootCmd.AddCommand(accessTokenCreateCmd)
  36. }