Resolve "Module configuration" #48

Merged
leon.hoppe merged 6 commits from feature/moduleConfig into dev 2024-12-23 12:40:41 +01:00
5 changed files with 20 additions and 5 deletions
Showing only changes of commit 20684ca40a - Show all commits

View File

@@ -0,0 +1,5 @@
namespace HopFrame.Web.Models;
public class HopFrameWebModuleConfig {
public string AdminLoginPageUri { get; set; } = "/administration/login";
}

View File

@@ -8,11 +8,12 @@
@using HopFrame.Security.Authorization @using HopFrame.Security.Authorization
@using HopFrame.Web.Admin.Providers @using HopFrame.Web.Admin.Providers
@using HopFrame.Web.Components @using HopFrame.Web.Components
@using HopFrame.Web.Models
@using Microsoft.AspNetCore.Components.Web @using Microsoft.AspNetCore.Components.Web
@using Microsoft.Extensions.Options @using Microsoft.Extensions.Options
@layout AdminLayout @layout AdminLayout
<AuthorizedView Permission="@Options.Value.Dashboard" RedirectIfUnauthorized="/administration/login" /> <AuthorizedView Permission="@Options.Value.Dashboard" RedirectIfUnauthorized="@ConstructRedirectUri()" />
<PageTitle>Admin Dashboard</PageTitle> <PageTitle>Admin Dashboard</PageTitle>
@@ -38,11 +39,16 @@
@inject NavigationManager Navigator @inject NavigationManager Navigator
@inject IAdminPagesProvider Pages @inject IAdminPagesProvider Pages
@inject IOptions<AdminPermissionOptions> Options @inject IOptions<AdminPermissionOptions> Options
@inject HopFrameWebModuleConfig Config
@code { @code {
public void NavigateTo(string url) { public void NavigateTo(string url) {
Navigator.NavigateTo("administration/" + url, true); Navigator.NavigateTo("/administration/" + url, true);
}
public string ConstructRedirectUri() {
return Config.AdminLoginPageUri + "?redirect=/administration";
} }
} }

View File

@@ -65,6 +65,6 @@
return; return;
} }
Navigator.NavigateTo(string.IsNullOrEmpty(RedirectAfter) ? DefaultRedirect : "/administration/" + RedirectAfter, true); Navigator.NavigateTo(string.IsNullOrEmpty(RedirectAfter) ? DefaultRedirect : RedirectAfter, true);
} }
} }

View File

@@ -16,6 +16,7 @@
@using HopFrame.Security.Claims @using HopFrame.Security.Claims
@using HopFrame.Web.Admin @using HopFrame.Web.Admin
@using HopFrame.Web.Components @using HopFrame.Web.Components
@using HopFrame.Web.Models
<PageTitle>@_pageData.Title</PageTitle> <PageTitle>@_pageData.Title</PageTitle>
<AuthorizedView Permission="@_pageData.Permissions.Read" RedirectIfUnauthorized="@GenerateRedirectString()" /> <AuthorizedView Permission="@_pageData.Permissions.Read" RedirectIfUnauthorized="@GenerateRedirectString()" />
@@ -107,6 +108,7 @@
@inject IPermissionRepository Permissions @inject IPermissionRepository Permissions
@inject SweetAlertService Alerts @inject SweetAlertService Alerts
@inject NavigationManager Navigator @inject NavigationManager Navigator
@inject HopFrameWebModuleConfig Config
@code { @code {
[Parameter] [Parameter]
@@ -251,6 +253,6 @@
} }
private string GenerateRedirectString() { private string GenerateRedirectString() {
return "/administration/login?redirect=" + _pageData?.Url; return Config.AdminLoginPageUri + "?redirect=/administration/" + _pageData?.Url;
} }
} }

View File

@@ -3,6 +3,7 @@ using CurrieTechnologies.Razor.SweetAlert2;
using HopFrame.Database; using HopFrame.Database;
using HopFrame.Security.Authentication; using HopFrame.Security.Authentication;
using HopFrame.Web.Admin; using HopFrame.Web.Admin;
using HopFrame.Web.Models;
using HopFrame.Web.Services; using HopFrame.Web.Services;
using HopFrame.Web.Services.Implementation; using HopFrame.Web.Services.Implementation;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
@@ -12,12 +13,13 @@ using Microsoft.Extensions.DependencyInjection;
namespace HopFrame.Web; namespace HopFrame.Web;
public static class ServiceCollectionExtensions { public static class ServiceCollectionExtensions {
public static IServiceCollection AddHopFrame<TDbContext>(this IServiceCollection services, ConfigurationManager configuration) where TDbContext : HopDbContextBase { public static IServiceCollection AddHopFrame<TDbContext>(this IServiceCollection services, ConfigurationManager configuration, HopFrameWebModuleConfig config = null) where TDbContext : HopDbContextBase {
services.AddHttpClient(); services.AddHttpClient();
services.AddHopFrameRepositories<TDbContext>(); services.AddHopFrameRepositories<TDbContext>();
services.AddScoped<IAuthService, AuthService>(); services.AddScoped<IAuthService, AuthService>();
services.AddTransient<AuthMiddleware>(); services.AddTransient<AuthMiddleware>();
services.AddAdminContext<HopAdminContext>(); services.AddAdminContext<HopAdminContext>();
services.AddSingleton(config ?? new HopFrameWebModuleConfig());
// Component library's // Component library's
services.AddSweetAlert2(); services.AddSweetAlert2();