2022-09-14 03:25:56 +08:00
|
|
|
package pro
|
|
|
|
|
|
|
|
import (
|
|
|
|
"github.com/gravitl/netmaker/models"
|
|
|
|
"github.com/gravitl/netmaker/models/promodels"
|
|
|
|
)
|
|
|
|
|
|
|
|
// AddProNetDefaults - adds default values to a network model
|
|
|
|
func AddProNetDefaults(network *models.Network) {
|
|
|
|
if network.ProSettings == nil {
|
|
|
|
newProSettings := promodels.ProNetwork{
|
|
|
|
DefaultAccessLevel: NO_ACCESS,
|
|
|
|
DefaultUserNodeLimit: 0,
|
|
|
|
DefaultUserClientLimit: 0,
|
|
|
|
AllowedUsers: []string{},
|
2022-09-14 21:58:01 +08:00
|
|
|
AllowedGroups: []string{DEFAULT_ALLOWED_GROUPS},
|
2022-09-14 03:25:56 +08:00
|
|
|
}
|
|
|
|
network.ProSettings = &newProSettings
|
|
|
|
}
|
2022-09-14 05:03:17 +08:00
|
|
|
if network.ProSettings.AllowedUsers == nil {
|
|
|
|
network.ProSettings.AllowedUsers = []string{}
|
|
|
|
}
|
|
|
|
if network.ProSettings.AllowedGroups == nil {
|
2022-09-14 21:58:01 +08:00
|
|
|
network.ProSettings.AllowedGroups = []string{DEFAULT_ALLOWED_GROUPS}
|
2022-09-14 05:03:17 +08:00
|
|
|
}
|
2022-09-14 03:25:56 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// isUserGroupAllowed - checks if a user group is allowed on a network
|
|
|
|
func isUserGroupAllowed(network *models.Network, groupName string) bool {
|
|
|
|
if network.ProSettings != nil {
|
|
|
|
if len(network.ProSettings.AllowedGroups) > 0 {
|
|
|
|
for i := range network.ProSettings.AllowedGroups {
|
|
|
|
currentGroup := network.ProSettings.AllowedGroups[i]
|
|
|
|
if currentGroup == DEFAULT_ALLOWED_GROUPS || currentGroup == groupName {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
func isUserInAllowedUsers(network *models.Network, userName string) bool {
|
|
|
|
if network.ProSettings != nil {
|
|
|
|
if len(network.ProSettings.AllowedUsers) > 0 {
|
|
|
|
for i := range network.ProSettings.AllowedUsers {
|
|
|
|
currentUser := network.ProSettings.AllowedUsers[i]
|
|
|
|
if currentUser == DEFAULT_ALLOWED_USERS || currentUser == userName {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false
|
|
|
|
}
|
|
|
|
|
|
|
|
// IsUserAllowed - checks if given username + groups if a user is allowed on network
|
|
|
|
func IsUserAllowed(network *models.Network, userName string, groups []string) bool {
|
|
|
|
isGroupAllowed := false
|
|
|
|
for _, g := range groups {
|
|
|
|
if isUserGroupAllowed(network, g) {
|
|
|
|
isGroupAllowed = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return isUserInAllowedUsers(network, userName) || isGroupAllowed
|
|
|
|
}
|