create.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package user
  2. import (
  3. "strings"
  4. "github.com/gravitl/netmaker/cli/functions"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/spf13/cobra"
  7. )
  8. var userCreateCmd = &cobra.Command{
  9. Use: "create",
  10. Args: cobra.NoArgs,
  11. Short: "Create a new user",
  12. Long: `Create a new user`,
  13. Run: func(cmd *cobra.Command, args []string) {
  14. user := &models.User{UserName: username, Password: password, PlatformRoleID: models.UserRoleID(platformID)}
  15. if len(networkRoles) > 0 {
  16. netRolesMap := make(map[models.NetworkID]map[models.UserRoleID]struct{})
  17. for netID, netRoles := range networkRoles {
  18. roleMap := make(map[models.UserRoleID]struct{})
  19. for _, roleID := range strings.Split(netRoles, " ") {
  20. roleMap[models.UserRoleID(roleID)] = struct{}{}
  21. }
  22. netRolesMap[models.NetworkID(netID)] = roleMap
  23. }
  24. user.NetworkRoles = netRolesMap
  25. }
  26. if len(groups) > 0 {
  27. grMap := make(map[models.UserGroupID]struct{})
  28. for _, groupID := range groups {
  29. grMap[models.UserGroupID(groupID)] = struct{}{}
  30. }
  31. user.UserGroups = grMap
  32. }
  33. functions.PrettyPrint(functions.CreateUser(user))
  34. },
  35. }
  36. func init() {
  37. userCreateCmd.Flags().StringVar(&username, "name", "", "Name of the user")
  38. userCreateCmd.Flags().StringVar(&password, "password", "", "Password of the user")
  39. userCreateCmd.Flags().StringVarP(&platformID, "platform-role", "r", models.ServiceUser.String(),
  40. "Platform Role of the user; run `nmctl roles list` to see available user roles")
  41. userCreateCmd.MarkFlagRequired("name")
  42. userCreateCmd.MarkFlagRequired("password")
  43. userCreateCmd.PersistentFlags().StringToStringVarP(&networkRoles, "network-roles", "n", nil,
  44. "Mapping of networkID and list of roles user will be part of (comma separated)")
  45. userCreateCmd.Flags().BoolVar(&admin, "admin", false, "Make the user an admin ? (deprecated v0.25.0 onwards)")
  46. userCreateCmd.Flags().StringArrayVarP(&groups, "groups", "g", nil, "List of user groups the user will be part of (comma separated)")
  47. rootCmd.AddCommand(userCreateCmd)
  48. }