|
@@ -6,6 +6,7 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
|
|
|
|
"github.com/gravitl/netmaker/database"
|
|
"github.com/gravitl/netmaker/database"
|
|
|
|
+ "github.com/gravitl/netmaker/logger"
|
|
"github.com/gravitl/netmaker/models"
|
|
"github.com/gravitl/netmaker/models"
|
|
)
|
|
)
|
|
|
|
|
|
@@ -52,17 +53,17 @@ var NetworkUserPermissionTemplate = models.UserRolePermissionTemplate{
|
|
NetworkLevelAccess: map[models.RsrcType]map[models.RsrcID]models.RsrcPermissionScope{
|
|
NetworkLevelAccess: map[models.RsrcType]map[models.RsrcID]models.RsrcPermissionScope{
|
|
models.RemoteAccessGwRsrc: {
|
|
models.RemoteAccessGwRsrc: {
|
|
models.AllRemoteAccessGwRsrcID: models.RsrcPermissionScope{
|
|
models.AllRemoteAccessGwRsrcID: models.RsrcPermissionScope{
|
|
- Read: true,
|
|
|
|
|
|
+ Read: true,
|
|
|
|
+ VPNaccess: true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
models.ExtClientsRsrc: {
|
|
models.ExtClientsRsrc: {
|
|
models.AllExtClientsRsrcID: models.RsrcPermissionScope{
|
|
models.AllExtClientsRsrcID: models.RsrcPermissionScope{
|
|
- Read: true,
|
|
|
|
- Create: true,
|
|
|
|
- Update: true,
|
|
|
|
- Delete: true,
|
|
|
|
- VPNaccess: true,
|
|
|
|
- SelfOnly: true,
|
|
|
|
|
|
+ Read: true,
|
|
|
|
+ Create: true,
|
|
|
|
+ Update: true,
|
|
|
|
+ Delete: true,
|
|
|
|
+ SelfOnly: true,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
@@ -378,13 +379,16 @@ func HasNetworkRsrcScope(permissionTemplate models.UserRolePermissionTemplate, n
|
|
return ok
|
|
return ok
|
|
}
|
|
}
|
|
func GetUserRAGNodes(user models.User) (gws map[string]models.Node) {
|
|
func GetUserRAGNodes(user models.User) (gws map[string]models.Node) {
|
|
|
|
+ logger.Log(0, "------------> 7. getUserRemoteAccessGwsV1")
|
|
gws = make(map[string]models.Node)
|
|
gws = make(map[string]models.Node)
|
|
userGwAccessScope := GetUserNetworkRolesWithRemoteVPNAccess(user)
|
|
userGwAccessScope := GetUserNetworkRolesWithRemoteVPNAccess(user)
|
|
|
|
+ logger.Log(0, fmt.Sprintf("User Gw Access Scope: %+v", userGwAccessScope))
|
|
_, allNetAccess := userGwAccessScope["*"]
|
|
_, allNetAccess := userGwAccessScope["*"]
|
|
nodes, err := GetAllNodes()
|
|
nodes, err := GetAllNodes()
|
|
if err != nil {
|
|
if err != nil {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ logger.Log(0, "------------> 8. getUserRemoteAccessGwsV1")
|
|
for _, node := range nodes {
|
|
for _, node := range nodes {
|
|
if node.IsIngressGateway && !node.PendingDelete {
|
|
if node.IsIngressGateway && !node.PendingDelete {
|
|
if allNetAccess {
|
|
if allNetAccess {
|
|
@@ -393,7 +397,7 @@ func GetUserRAGNodes(user models.User) (gws map[string]models.Node) {
|
|
gwRsrcMap := userGwAccessScope[models.NetworkID(node.Network)]
|
|
gwRsrcMap := userGwAccessScope[models.NetworkID(node.Network)]
|
|
scope, ok := gwRsrcMap[models.AllRemoteAccessGwRsrcID]
|
|
scope, ok := gwRsrcMap[models.AllRemoteAccessGwRsrcID]
|
|
if !ok {
|
|
if !ok {
|
|
- if _, ok := gwRsrcMap[models.RsrcID(node.ID.String())]; !ok {
|
|
|
|
|
|
+ if scope, ok = gwRsrcMap[models.RsrcID(node.ID.String())]; !ok {
|
|
continue
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -404,12 +408,14 @@ func GetUserRAGNodes(user models.User) (gws map[string]models.Node) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ logger.Log(0, "------------> 9. getUserRemoteAccessGwsV1")
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
|
|
// GetUserNetworkRoles - get user network roles
|
|
// GetUserNetworkRoles - get user network roles
|
|
func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[models.NetworkID]map[models.RsrcID]models.RsrcPermissionScope) {
|
|
func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[models.NetworkID]map[models.RsrcID]models.RsrcPermissionScope) {
|
|
gwAccess = make(map[models.NetworkID]map[models.RsrcID]models.RsrcPermissionScope)
|
|
gwAccess = make(map[models.NetworkID]map[models.RsrcID]models.RsrcPermissionScope)
|
|
|
|
+ logger.Log(0, "------------> 7.1 getUserRemoteAccessGwsV1")
|
|
platformRole, err := GetRole(user.PlatformRoleID)
|
|
platformRole, err := GetRole(user.PlatformRoleID)
|
|
if err != nil {
|
|
if err != nil {
|
|
return
|
|
return
|
|
@@ -418,6 +424,7 @@ func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[mode
|
|
gwAccess[models.NetworkID("*")] = make(map[models.RsrcID]models.RsrcPermissionScope)
|
|
gwAccess[models.NetworkID("*")] = make(map[models.RsrcID]models.RsrcPermissionScope)
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ logger.Log(0, "------------> 7.2 getUserRemoteAccessGwsV1")
|
|
for netID, roleMap := range user.NetworkRoles {
|
|
for netID, roleMap := range user.NetworkRoles {
|
|
for roleID := range roleMap {
|
|
for roleID := range roleMap {
|
|
role, err := GetRole(roleID)
|
|
role, err := GetRole(roleID)
|
|
@@ -427,9 +434,16 @@ func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[mode
|
|
models.AllRemoteAccessGwRsrcID: {
|
|
models.AllRemoteAccessGwRsrcID: {
|
|
Create: true,
|
|
Create: true,
|
|
Read: true,
|
|
Read: true,
|
|
|
|
+ Update: true,
|
|
VPNaccess: true,
|
|
VPNaccess: true,
|
|
Delete: true,
|
|
Delete: true,
|
|
},
|
|
},
|
|
|
|
+ models.AllExtClientsRsrcID: {
|
|
|
|
+ Create: true,
|
|
|
|
+ Read: true,
|
|
|
|
+ Update: true,
|
|
|
|
+ Delete: true,
|
|
|
|
+ },
|
|
}
|
|
}
|
|
break
|
|
break
|
|
}
|
|
}
|
|
@@ -443,6 +457,9 @@ func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[mode
|
|
} else {
|
|
} else {
|
|
for gwID, scope := range rsrcsMap {
|
|
for gwID, scope := range rsrcsMap {
|
|
if scope.VPNaccess {
|
|
if scope.VPNaccess {
|
|
|
|
+ if len(gwAccess[netID]) == 0 {
|
|
|
|
+ gwAccess[netID] = make(map[models.RsrcID]models.RsrcPermissionScope)
|
|
|
|
+ }
|
|
gwAccess[netID][gwID] = scope
|
|
gwAccess[netID][gwID] = scope
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -453,5 +470,6 @@ func GetUserNetworkRolesWithRemoteVPNAccess(user models.User) (gwAccess map[mode
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ logger.Log(0, "------------> 7.3 getUserRemoteAccessGwsV1")
|
|
return
|
|
return
|
|
}
|
|
}
|