Переглянути джерело

list gateways by user access

abhishek9686 3 місяців тому
батько
коміт
ecb797b5ed
1 змінених файлів з 22 додано та 1 видалено
  1. 22 1
      pro/logic/user_mgmt.go

+ 22 - 1
pro/logic/user_mgmt.go

@@ -695,9 +695,30 @@ func GetUserRAGNodes(user models.User) (gws map[string]models.Node) {
 	if err != nil {
 		return
 	}
+
 	for _, node := range nodes {
-		if ok, _ := logic.IsUserAllowedToCommunicate(user.UserName, node); ok {
+		if user.PlatformRoleID == models.AdminRole || user.PlatformRoleID == models.SuperAdminRole {
 			gws[node.ID.String()] = node
+		} else {
+			// check if user has network role assigned
+			if roles, ok := user.NetworkRoles[models.NetworkID(node.Network)]; ok && len(roles) > 0 {
+				if ok, _ := logic.IsUserAllowedToCommunicate(user.UserName, node); ok {
+					gws[node.ID.String()] = node
+					continue
+				}
+			}
+			for groupID := range user.UserGroups {
+				userGrp, err := logic.GetUserGroup(groupID)
+				if err == nil {
+					if roles, ok := userGrp.NetworkRoles[models.NetworkID(node.Network)]; ok && len(roles) > 0 {
+						if ok, _ := logic.IsUserAllowedToCommunicate(user.UserName, node); ok {
+							gws[node.ID.String()] = node
+							break
+						}
+					}
+				}
+			}
+
 		}
 	}
 	return