LANCommander/LANCommander.Server/UI/Pages/Settings/Authentication/Index.razor

92 lines
3.2 KiB
Text
Raw Permalink Normal View History

@page "/Settings/Authentication"
@using CaseConverter
@using LANCommander.Server.UI.Pages.Settings.Authentication.Components
@inject IMessageService MessageService
@inject ILogger<Index> Logger
2025-06-21 23:16:18 +02:00
@inject IServiceProvider ServiceProvider
@attribute [Authorize(Roles = RoleService.AdministratorRoleName)]
<PageHeader Title="Authentication">
<PageHeaderExtra>
<Button OnClick="Save" Type="@ButtonType.Primary">Save</Button>
</PageHeaderExtra>
</PageHeader>
2025-02-04 19:32:33 -06:00
<PageContent>
<Form Model="Settings" Layout="@FormLayout.Vertical">
<FormItem Label="Require Account Approval">
<Switch @bind-Checked="context.Authentication.RequireApproval" />
</FormItem>
<FormItem Label="Token Secret">
<InputPassword @bind-Value="context.Authentication.TokenSecret" />
</FormItem>
<FormItem Label="Token Lifetime">
<AntDesign.InputNumber @bind-Value="context.Authentication.TokenLifetime" Formatter="FormatTokenLifetime" Min="1" />
</FormItem>
<Divider Text="Password Requirements" />
<FormItem Label="Require non-alphanumeric characters">
<Switch @bind-Checked="@context.Authentication.PasswordRequireNonAlphanumeric" />
</FormItem>
<FormItem Label="Require Lowercase characters">
<Switch @bind-Checked="context.Authentication.PasswordRequireLowercase" />
</FormItem>
<FormItem Label="Require Uppercase characters">
<Switch @bind-Checked="context.Authentication.PasswordRequireUppercase" />
</FormItem>
<FormItem Label="Require digits">
<Switch @bind-Checked="context.Authentication.PasswordRequireDigit" />
</FormItem>
<FormItem Label="Minimum Length">
<AntDesign.InputNumber @bind-Value="context.Authentication.PasswordRequiredLength" Min="1" />
</FormItem>
2025-02-04 19:32:33 -06:00
2025-01-06 20:34:11 -06:00
<Divider Text="Security" />
2025-02-04 19:32:33 -06:00
2025-01-06 20:34:11 -06:00
<FormItem Label="Minimum Same Site Cookie Policy">
<EnumSelect TEnum="SameSiteMode" @bind-Value="context.Authentication.MinimumSameSitePolicy" />
</FormItem>
2025-02-04 19:32:33 -06:00
2025-01-06 20:34:11 -06:00
<FormItem Label="Cookie Secure Policy">
<EnumSelect TEnum="CookieSecurePolicy" @bind-Value="context.Authentication.CookieSecurePolicy" />
</FormItem>
</Form>
<Divider Text="External Providers" />
<ExternalProviderEditor @bind-Values="Settings.Authentication.AuthenticationProviders" />
2025-02-04 19:32:33 -06:00
</PageContent>
@code {
2025-06-21 23:16:18 +02:00
Settings Settings = SettingService.GetSettings();
string FormatTokenLifetime(int value)
{
return value.ToString() + " days";
}
void Save()
{
try
{
foreach (var authenticationProvider in Settings.Authentication.AuthenticationProviders)
{
if (String.IsNullOrWhiteSpace(authenticationProvider.Slug))
authenticationProvider.Slug = authenticationProvider.Name.ToPascalCase();
}
2025-06-21 23:16:18 +02:00
SettingService.SaveSettings(Settings, ServiceProvider);
MessageService.Success("Settings saved!");
}
2024-07-07 16:33:46 -05:00
catch (Exception ex)
{
MessageService.Error("An unknown error occurred.");
2024-07-07 16:33:46 -05:00
Logger.LogError(ex, "An unknown error occurred.");
}
}
}