private static void RegisterPermissionClaimPolicyByModule(AuthorizationOptions options, string module) { var allPermissions = PermissionModules.GeneratePermissionsForModule(module); foreach (var permission in allPermissions) { options.AddPolicy(permission, policy => policy.RequireClaim(ApplicationClaimTypes.Permission, permission)); } }
public static async Task GeneratePermissionClaimByModule(this RoleManager <IdentityRole> roleManager, IdentityRole role, string module) { var allClaims = await roleManager.GetClaimsAsync(role); var allPermissions = PermissionModules.GeneratePermissionsForModule(module); foreach (var permission in allPermissions) { if (!allClaims.Any(a => a.Type == ApplicationClaimTypes.Permission && a.Value == permission)) { await roleManager.AddClaimAsync(role, new Claim(ApplicationClaimTypes.Permission, permission)); } } }
public static WebAssemblyHostBuilder AddClientServices(this WebAssemblyHostBuilder builder) { builder .Services .AddAuthorizationCore(options => { foreach (var permissionModule in PermissionModules.GetAllPermissionsModules()) { RegisterPermissionClaimPolicyByModule(options, permissionModule); } }) .AddBlazoredLocalStorage() .AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()) .AddMudServices( configuration => { configuration.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomRight; configuration.SnackbarConfiguration.HideTransitionDuration = 100; configuration.SnackbarConfiguration.ShowTransitionDuration = 100; configuration.SnackbarConfiguration.VisibleStateDuration = 3000; configuration.SnackbarConfiguration.ShowCloseIcon = false; }) .AddScoped <EntityGBlazorStateProvider>() .AddScoped <AuthenticationStateProvider, EntityGBlazorStateProvider>() .AddManagers() .AddTransient <AuthenticationHeaderHandler>() .AddScoped(sp => sp .GetRequiredService <IHttpClientFactory>() .CreateClient(ClientName).EnableIntercept(sp)) .AddHttpClient(ClientName, client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)) .AddHttpMessageHandler <AuthenticationHeaderHandler>(); builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) }); builder.Services.AddAntDesign(); builder.Services.Configure <ProSettings>(builder.Configuration.GetSection("ProSettings")); builder.Services.AddScoped <IChartService, ChartService>(); builder.Services.AddScoped <IProjectService, ProjectService>(); builder.Services.AddScoped <IUserService, UserService>(); builder.Services.AddScoped <IAccountService, AccountService>(); builder.Services.AddScoped <IProfileService, ProfileService>(); builder.Services.AddHttpClientInterceptor(); return(builder); }
public static WebAssemblyHostBuilder AddClientServices(this WebAssemblyHostBuilder builder) { builder .Services .AddLocalization(options => { options.ResourcesPath = "Resources"; }) .AddAuthorizationCore(options => { foreach (var permissionModule in PermissionModules.GetAllPermissionsModules()) { RegisterPermissionClaimPolicyByModule(options, permissionModule); } }) .AddBlazoredLocalStorage() .AddMudServices(configuration => { configuration.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomRight; configuration.SnackbarConfiguration.HideTransitionDuration = 100; configuration.SnackbarConfiguration.ShowTransitionDuration = 100; configuration.SnackbarConfiguration.VisibleStateDuration = 3000; configuration.SnackbarConfiguration.ShowCloseIcon = false; }) .AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()) .AddScoped <ClientPreferenceManager>() .AddScoped <BlazorHeroStateProvider>() .AddScoped <AuthenticationStateProvider, BlazorHeroStateProvider>() .AddManagers() .AddTransient <AuthenticationHeaderHandler>() .AddScoped(sp => sp .GetRequiredService <IHttpClientFactory>() .CreateClient(ClientName).EnableIntercept(sp)) .AddHttpClient(ClientName, client => { client.DefaultRequestHeaders.AcceptLanguage.Clear(); client.DefaultRequestHeaders.AcceptLanguage.ParseAdd(CultureInfo.DefaultThreadCurrentCulture?.TwoLetterISOLanguageName); client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress); }) .AddHttpMessageHandler <AuthenticationHeaderHandler>(); builder.Services.AddHttpClientInterceptor(); return(builder); }
public static WebAssemblyHostBuilder AddClientServices(this WebAssemblyHostBuilder builder) { builder .Services .AddAuthorizationCore(options => { foreach (var permissionModule in PermissionModules.GetAllPermissionsModules()) { RegisterPermissionClaimPolicyByModule(options, permissionModule); } }) .AddBlazoredLocalStorage() .AddLocalization(options => { options.ResourcesPath = "Resources"; }) .AddMudServices( configuration => { configuration.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomRight; configuration.SnackbarConfiguration.HideTransitionDuration = 100; configuration.SnackbarConfiguration.ShowTransitionDuration = 100; configuration.SnackbarConfiguration.VisibleStateDuration = 3000; configuration.SnackbarConfiguration.ShowCloseIcon = false; }) .AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies()) .AddScoped <PreferenceManager>() .AddScoped <BlazorHeroStateProvider>() .AddScoped <AuthenticationStateProvider, BlazorHeroStateProvider>() .AddManagers() .AddTransient <AuthenticationHeaderHandler>() .AddScoped(sp => sp .GetRequiredService <IHttpClientFactory>() .CreateClient(ClientName)) .AddHttpClient(ClientName, client => client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress)) .AddTransientHttpErrorPolicy(policy => policy.WaitAndRetryAsync(3, _ => TimeSpan.FromSeconds(2))) .AddHttpMessageHandler <AuthenticationHeaderHandler>(); return(builder); }