public ListResponse <string> ListPermissionKeys()
        {
            return(LocalCache.Get("Administration:PermissionKeys", TimeSpan.Zero, () =>
            {
                var result = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

                result.AddRange(NestedPermissionKeyRegistration.AddNestedPermissions(registry: null));

                foreach (var assembly in ExtensibilityHelper.SelfAssemblies)
                {
                    foreach (var attr in assembly.GetCustomAttributes <PermissionAttributeBase>())
                    {
                        if (!attr.Permission.IsEmptyOrNull())
                        {
                            result.AddRange(SplitPermissions(attr.Permission));
                        }
                    }

                    foreach (var type in assembly.GetTypes())
                    {
                        ProcessAttributes <PageAuthorizeAttribute>(result, type, x => x.Permission);
                        ProcessAttributes <PermissionAttributeBase>(result, type, x => x.Permission);
                        ProcessAttributes <ServiceAuthorizeAttribute>(result, type, x => x.Permission);

                        foreach (var member in type.GetMethods(BindingFlags.Instance | BindingFlags.Public))
                        {
                            ProcessAttributes <PageAuthorizeAttribute>(result, member, x => x.Permission);
                            ProcessAttributes <PermissionAttributeBase>(result, member, x => x.Permission);
                            ProcessAttributes <ServiceAuthorizeAttribute>(result, member, x => x.Permission);
                        }

                        foreach (var member in type.GetProperties(BindingFlags.Instance | BindingFlags.Public))
                        {
                            if (member.GetIndexParameters().Length == 0)
                            {
                                ProcessAttributes <PermissionAttributeBase>(result, member, x => x.Permission);
                            }
                        }
                    }
                }

                result.Remove(Administration.PermissionKeys.Tenants);
                result.Remove("*");
                result.Remove("?");

                return new ListResponse <string>
                {
                    Entities = new List <string>(result)
                };
            }));
        }
        public static IEnumerable <string> ListPermissionKeys(IMemoryCache memoryCache, ITypeSource typeSource)
        {
            if (typeSource is null)
            {
                throw new ArgumentNullException(nameof(typeSource));
            }

            return(memoryCache.Get("Administration:PermissionKeys", TimeSpan.Zero, () =>
            {
                var result = new HashSet <string>(StringComparer.OrdinalIgnoreCase);

                result.AddRange(NestedPermissionKeyRegistration.AddNestedPermissions(registry: null, typeSource));

                foreach (var attr in typeSource.GetAssemblyAttributes <PermissionAttributeBase>())
                {
                    if (!attr.Permission.IsEmptyOrNull())
                    {
                        result.AddRange(SplitPermissions(attr.Permission));
                    }
                }

                foreach (var type in typeSource.GetTypes())
                {
                    ProcessAttributes <PageAuthorizeAttribute>(result, type, x => x.Permission);
                    ProcessAttributes <PermissionAttributeBase>(result, type, x => x.Permission);
                    ProcessAttributes <ServiceAuthorizeAttribute>(result, type, x => x.Permission);

                    foreach (var member in type.GetMethods(BindingFlags.Instance | BindingFlags.Public))
                    {
                        ProcessAttributes <PageAuthorizeAttribute>(result, member, x => x.Permission);
                        ProcessAttributes <PermissionAttributeBase>(result, member, x => x.Permission);
                        ProcessAttributes <ServiceAuthorizeAttribute>(result, member, x => x.Permission);
                    }

                    foreach (var member in type.GetProperties(BindingFlags.Instance | BindingFlags.Public))
                    {
                        if (member.GetIndexParameters().Length == 0)
                        {
                            ProcessAttributes <PermissionAttributeBase>(result, member, x => x.Permission);
                        }
                    }
                }

                result.Remove("*");
                result.Remove("?");

                return result;
            }));
        }
Exemple #3
0
        public static void InitializeLocalTexts()
        {
            var registrar = Dependency.Resolve <IDependencyRegistrar>();

            var registry = Dependency.TryResolve <ILocalTextRegistry>();

            if (registry == null)
            {
                registry = new LocalTextRegistry();
                registrar.RegisterInstance <ILocalTextRegistry>(registry);
            }

            NestedLocalTextRegistration.Initialize(ExtensibilityHelper.SelfAssemblies);
            NestedPermissionKeyRegistration.AddNestedPermissions(registry, ExtensibilityHelper.SelfAssemblies);
            EnumLocalTextRegistration.Initialize(ExtensibilityHelper.SelfAssemblies);
            EntityLocalTexts.Initialize();
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/Scripts/serenity/texts/"));
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/Scripts/site/texts/"));
            JsonLocalTextRegistration.AddFromFilesInFolder(HostingEnvironment.MapPath("~/App_Data/texts/"));
        }