2
0

update.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 userUpdateCmd = &cobra.Command{
  9. Use: "update [USER NAME]",
  10. Args: cobra.ExactArgs(1),
  11. Short: "Update a user",
  12. Long: `Update a user`,
  13. Run: func(cmd *cobra.Command, args []string) {
  14. user := &models.User{UserName: args[0]}
  15. if platformID != "" {
  16. user.PlatformRoleID = models.UserRoleID(platformID)
  17. }
  18. if len(networkRoles) > 0 {
  19. netRolesMap := make(map[models.NetworkID]map[models.UserRoleID]struct{})
  20. for netID, netRoles := range networkRoles {
  21. roleMap := make(map[models.UserRoleID]struct{})
  22. for _, roleID := range strings.Split(netRoles, ",") {
  23. roleMap[models.UserRoleID(roleID)] = struct{}{}
  24. }
  25. netRolesMap[models.NetworkID(netID)] = roleMap
  26. }
  27. user.NetworkRoles = netRolesMap
  28. }
  29. if len(groups) > 0 {
  30. grMap := make(map[models.UserGroupID]struct{})
  31. for _, groupID := range groups {
  32. grMap[models.UserGroupID(groupID)] = struct{}{}
  33. }
  34. user.UserGroups = grMap
  35. }
  36. functions.PrettyPrint(functions.UpdateUser(user))
  37. },
  38. }
  39. func init() {
  40. userUpdateCmd.Flags().StringVar(&password, "password", "", "Password of the user")
  41. userUpdateCmd.Flags().StringVarP(&platformID, "platform-role", "r", "",
  42. "Platform Role of the user; run `nmctl roles list` to see available user roles")
  43. userUpdateCmd.PersistentFlags().StringToStringVarP(&networkRoles, "network-roles", "n", nil,
  44. "Mapping of networkID and list of roles user will be part of (comma separated)")
  45. userUpdateCmd.Flags().BoolVar(&admin, "admin", false, "Make the user an admin ? (deprecated v0.25.0 onwards)")
  46. userUpdateCmd.Flags().StringArrayVarP(&groups, "groups", "g", nil, "List of user groups the user will be part of (comma separated)")
  47. rootCmd.AddCommand(userUpdateCmd)
  48. }