networks.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package pro
  2. import (
  3. "github.com/gravitl/netmaker/models"
  4. "github.com/gravitl/netmaker/models/promodels"
  5. )
  6. // AddProNetDefaults - adds default values to a network model
  7. func AddProNetDefaults(network *models.Network) {
  8. if network.ProSettings == nil {
  9. newProSettings := promodels.ProNetwork{
  10. DefaultAccessLevel: NO_ACCESS,
  11. DefaultUserNodeLimit: 0,
  12. DefaultUserClientLimit: 0,
  13. AllowedUsers: []string{},
  14. AllowedGroups: []string{DEFAULT_ALLOWED_GROUPS},
  15. }
  16. network.ProSettings = &newProSettings
  17. }
  18. if network.ProSettings.AllowedUsers == nil {
  19. network.ProSettings.AllowedUsers = []string{}
  20. }
  21. if network.ProSettings.AllowedGroups == nil {
  22. network.ProSettings.AllowedGroups = []string{DEFAULT_ALLOWED_GROUPS}
  23. }
  24. }
  25. // isUserGroupAllowed - checks if a user group is allowed on a network
  26. func isUserGroupAllowed(network *models.Network, groupName string) bool {
  27. if network.ProSettings != nil {
  28. if len(network.ProSettings.AllowedGroups) > 0 {
  29. for i := range network.ProSettings.AllowedGroups {
  30. currentGroup := network.ProSettings.AllowedGroups[i]
  31. if currentGroup == DEFAULT_ALLOWED_GROUPS || currentGroup == groupName {
  32. return true
  33. }
  34. }
  35. }
  36. }
  37. return false
  38. }
  39. func isUserInAllowedUsers(network *models.Network, userName string) bool {
  40. if network.ProSettings != nil {
  41. if len(network.ProSettings.AllowedUsers) > 0 {
  42. for i := range network.ProSettings.AllowedUsers {
  43. currentUser := network.ProSettings.AllowedUsers[i]
  44. if currentUser == DEFAULT_ALLOWED_USERS || currentUser == userName {
  45. return true
  46. }
  47. }
  48. }
  49. }
  50. return false
  51. }
  52. // IsUserAllowed - checks if given username + groups if a user is allowed on network
  53. func IsUserAllowed(network *models.Network, userName string, groups []string) bool {
  54. isGroupAllowed := false
  55. for _, g := range groups {
  56. if isUserGroupAllowed(network, g) {
  57. isGroupAllowed = true
  58. break
  59. }
  60. }
  61. return isUserInAllowedUsers(network, userName) || isGroupAllowed
  62. }