migrate.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package logic
  2. import (
  3. "fmt"
  4. "github.com/gravitl/netmaker/logic"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. func MigrateUserRoleAndGroups(user models.User) {
  8. var err error
  9. if len(user.RemoteGwIDs) > 0 {
  10. // define user roles for network
  11. // assign relevant network role to user
  12. for remoteGwID := range user.RemoteGwIDs {
  13. gwNode, err := logic.GetNodeByID(remoteGwID)
  14. if err != nil {
  15. continue
  16. }
  17. var g models.UserGroup
  18. if user.PlatformRoleID == models.ServiceUser {
  19. g, err = GetUserGroup(models.UserGroupID(fmt.Sprintf("%s-%s-grp", gwNode.Network, models.NetworkUser)))
  20. } else {
  21. g, err = GetUserGroup(models.UserGroupID(fmt.Sprintf("%s-%s-grp",
  22. gwNode.Network, models.NetworkAdmin)))
  23. }
  24. if err != nil {
  25. continue
  26. }
  27. user.UserGroups[g.ID] = struct{}{}
  28. }
  29. }
  30. if len(user.NetworkRoles) > 0 {
  31. for netID := range user.NetworkRoles {
  32. var g models.UserGroup
  33. if user.PlatformRoleID == models.ServiceUser {
  34. g, err = GetUserGroup(models.UserGroupID(fmt.Sprintf("%s-%s-grp", netID, models.NetworkUser)))
  35. } else {
  36. g, err = GetUserGroup(models.UserGroupID(fmt.Sprintf("%s-%s-grp",
  37. netID, models.NetworkAdmin)))
  38. }
  39. if err != nil {
  40. continue
  41. }
  42. user.UserGroups[g.ID] = struct{}{}
  43. if err != nil {
  44. continue
  45. }
  46. }
  47. }
  48. logic.UpsertUser(user)
  49. }