فهرست منبع

Fixed visibility of one to many and many to many pages based on security token

Kenric Nugteren 11 ماه پیش
والد
کامیت
abfcbdc8ae
1فایلهای تغییر یافته به همراه18 افزوده شده و 5 حذف شده
  1. 18 5
      inabox.wpf/DynamicGrid/DynamicGridUtils.cs

+ 18 - 5
inabox.wpf/DynamicGrid/DynamicGridUtils.cs

@@ -159,7 +159,14 @@ public static class DynamicGridUtils
             }
             _manytomanytomanypages[type] = pageTypes.ToArray();
         }
-        pages.AddRange(pageTypes.Select(x => (Activator.CreateInstance(x) as IDynamicEditorPage)!));
+        foreach(var pageType in pageTypes)
+        {
+            var entityType = pageType.GetSuperclassDefinition(typeof(DynamicGrid<>))!.GenericTypeArguments[0];
+            if (Security.CanView(entityType))
+            {
+                pages.Add((Activator.CreateInstance(pageType) as IDynamicEditorPage)!);
+            }
+        }
     }
 
     public static IEnumerable<Type> GetOneToManyTypes(Type type)
@@ -187,7 +194,6 @@ public static class DynamicGridUtils
             {
                 if (ClientFactory.IsSupported(map))
                 {
-
                     _allo2mpages ??= CoreUtils.Entities.Where(
                             x =>
                                 x.IsClass
@@ -217,7 +223,14 @@ public static class DynamicGridUtils
 
             _onetomanypages[type] = pageTypes.ToArray();
         }
-        pages.AddRange(pageTypes.Select(x => (Activator.CreateInstance(x) as IDynamicEditorPage)!));
+        foreach(var pageType in pageTypes)
+        {
+            var entityType = pageType.GetSuperclassDefinition(typeof(DynamicGrid<>))!.GenericTypeArguments[0];
+            if (Security.CanView(entityType))
+            {
+                pages.Add((Activator.CreateInstance(pageType) as IDynamicEditorPage)!);
+            }
+        }
     }
 
     public static void LoadCustomEditorPages(Type type, DynamicEditorPages pages)
@@ -655,7 +668,7 @@ public static class DynamicGridUtils
     /// <param name="customiseGrid"></param>
     /// <returns></returns>
     public static bool EditEntity<T>(T item, Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false, Action<DynamicGrid<T>>? customiseGrid = null)
-        where T : Entity, new()
+        where T : BaseObject, new()
     {
         var grid = CreateDynamicGrid<T>(typeof(DynamicGrid<>));
         customiseGrid?.Invoke(grid);
@@ -672,7 +685,7 @@ public static class DynamicGridUtils
     /// <param name="customiseGrid"></param>
     /// <returns></returns>
     public static bool EditEntities<T>(T[] items, Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false, Action<DynamicGrid<T>>? customiseGrid = null)
-        where T : Entity, new()
+        where T : BaseObject, new()
     {
         var grid = CreateDynamicGrid<T>(typeof(DynamicGrid<>));
         customiseGrid?.Invoke(grid);