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
93 lines
No EOL
4.4 KiB
Text
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> |