LANCommander/LANCommander.Server/UI/Pages/Account/Login.cshtml
Pat Hartl 0f03461f53 Add setting to auto redirect to external provider
When enabled, AutoRedirectToProvider will switch authentication challenges to redirect to the external auth provider instead of displaying the password login form. If more than one external provider is configured, a minimal external auth provider login page will be shown.

Ref #410
2026-06-21 01:59:15 -05:00

93 lines
No EOL
4.4 KiB
Text

@page "/Login"
@using LANCommander.Server.Extensions
@using LANCommander.Server.Settings
@model LANCommander.Server.UI.Pages.Account.LoginModel
@inject SettingsProvider<Settings> SettingsProvider
@{ Layout = "/UI/Views/Shared/_LayoutBasic.cshtml"; }
@{
ViewData["Title"] = "Log in";
var providers = HttpContext.GetExternalProviders();
}
<div class="login-container">
<div class="login-container-background" style="background-image: url('@Model.ScreenshotUrl')"></div>
<div class="ant-row login-box">
<div class="ant-col ant-col-xs-24 ant-col-md-8 ant-col-lg-6 ant-col-md-push-4 ant-col-lg-push-6 login-form-pane">
<div class="login-box-logo">
<img src="~/static/logo-dark.svg"/>
</div>
@foreach (var error in ModelState.SelectMany(x => x.Value.Errors))
{
<div data-show="true" class="ant-alert ant-alert-error ant-alert-no-icon" style="margin-bottom: 16px">
<div class="ant-alert-content">
<div class="ant-alert-message">@error.ErrorMessage</div>
</div>
</div>
}
<form id="account" method="post" autocomplete="off">
<div class="ant-form ant-form-vertical">
<div class="ant-form-item">
<div class="ant-form-item-row ant-row">
<div class="ant-form-item-label ant-col">
<label asp-for="Model.Username" class="form-label"></label>
</div>
<div class="ant-form-item-control ant-col">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<input asp-for="Model.Username" class="ant-input" autocomplete="username" aria-required="true"/>
</div>
</div>
</div>
</div>
</div>
<div class="ant-form-item">
<div class="ant-form-item-row ant-row">
<div class="ant-form-item-label ant-col">
<label asp-for="Model.Password" class="form-label"></label>
</div>
<div class="ant-form-item-control ant-col">
<div class="ant-form-item-control-input">
<div class="ant-form-item-control-input-content">
<input asp-for="Model.Password" class="ant-input" autocomplete="current-password" aria-required="true"/>
</div>
</div>
</div>
</div>
</div>
<div class="ant-form-item" style="margin-bottom: 0;">
<div class="ant-flex ant-flex-gap-small ant-flex-wrap-nowrap">
<button id="login-submit" type="submit" class="ant-btn ant-btn-primary">Login</button>
@if (SettingsProvider.CurrentValue.Server.Authentication.AllowRegistration)
{
<a href="~/Register" class="ant-btn ant-btn-default">Register</a>
}
</div>
</div>
</div>
</form>
@if (providers != null && providers.Count() > 0)
{
<span class="ant-divider ant-divider-horizontal ant-divider-with-text ant-divider-with-text-center">
<span class="ant-divider-inner-text">
Or
</span>
</span>
<partial name="_ProviderButtons" model="@(new LANCommander.Server.Models.ProviderButtonsModel { Providers = providers, ReturnUrl = Model.ReturnUrl })"/>
}
</div>
<div class="ant-col ant-col-xs-24 ant-col-md-8 ant-col-lg-6 ant-col-md-push-4 ant-col-lg-push-6 login-download-pane" style="background-image: url('@Model.ScreenshotUrl')">
@(await Html.RenderComponentAsync<LANCommander.Server.UI.Pages.Account.Components.LauncherDownloadButton>(RenderMode.Server))
</div>
</div>
</div>