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; })); }
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/")); }