96 lines
3.8 KiB
Plaintext
96 lines
3.8 KiB
Plaintext
@namespace Oqtane.Modules.Admin.Login
|
|
@inherits ModuleBase
|
|
@inject NavigationManager NavigationManager
|
|
@inject IJSRuntime jsRuntime
|
|
@inject IUserService UserService
|
|
@inject IServiceProvider ServiceProvider
|
|
|
|
<AuthorizeView>
|
|
<Authorizing>
|
|
<text>...</text>
|
|
</Authorizing>
|
|
<Authorized>
|
|
You are already logged in
|
|
</Authorized>
|
|
<NotAuthorized>
|
|
<div class="container">
|
|
<div class="form-group">
|
|
<label for="Username" class="control-label">Username: </label>
|
|
<input type="text" name="Username" class="form-control" placeholder="Username" @bind="@Username" />
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="Password" class="control-label">Password: </label>
|
|
<input type="password" name="Password" class="form-control" placeholder="Password" @bind="@Password" />
|
|
</div>
|
|
<div class="form-group">
|
|
<div class="form-check form-check-inline">
|
|
<label class="form-check-label" for="Remember">Remember Me?</label>
|
|
<input type="checkbox" class="form-check-input" name="Remember" @bind="@Remember" />
|
|
</div>
|
|
</div>
|
|
<button type="button" class="btn btn-primary" @onclick="Login">Login</button>
|
|
<button type="button" class="btn btn-secondary" @onclick="Cancel">Cancel</button>
|
|
</div>
|
|
</NotAuthorized>
|
|
</AuthorizeView>
|
|
|
|
@code {
|
|
public override SecurityAccessLevel SecurityAccessLevel { get { return SecurityAccessLevel.Anonymous; } }
|
|
|
|
public string Username { get; set; } = "";
|
|
public string Password { get; set; } = "";
|
|
public bool Remember { get; set; } = false;
|
|
|
|
private async Task Login()
|
|
{
|
|
string ReturnUrl = PageState.QueryString["returnurl"];
|
|
|
|
var authstateprovider = (IdentityAuthenticationStateProvider)ServiceProvider.GetService(typeof(IdentityAuthenticationStateProvider));
|
|
if (authstateprovider == null)
|
|
{
|
|
// server-side Blazor
|
|
User user = new User();
|
|
user.SiteId = PageState.Site.SiteId;
|
|
user.Username = Username;
|
|
user.Password = Password;
|
|
user = await UserService.LoginUserAsync(user, false, false);
|
|
if (user.IsAuthenticated)
|
|
{
|
|
// complete the login on the server so that the cookies are set correctly on SignalR
|
|
var interop = new Interop(jsRuntime);
|
|
string antiforgerytoken = await interop.GetElementByName("__RequestVerificationToken");
|
|
var fields = new { __RequestVerificationToken = antiforgerytoken, username = Username, password = Password, remember = Remember, returnurl = ReturnUrl };
|
|
await interop.SubmitForm("/login/", fields);
|
|
}
|
|
else
|
|
{
|
|
AddModuleMessage("Login Failed. Please Remember That Passwords Are Case Sensitive.", MessageType.Error);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// client-side Blazor
|
|
User user = new User();
|
|
user.SiteId = PageState.Site.SiteId;
|
|
user.Username = Username;
|
|
user.Password = Password;
|
|
user = await UserService.LoginUserAsync(user, true, Remember);
|
|
if (user.IsAuthenticated)
|
|
{
|
|
authstateprovider.NotifyAuthenticationChanged();
|
|
NavigationManager.NavigateTo(NavigateUrl(ReturnUrl, Reload.Site));
|
|
}
|
|
else
|
|
{
|
|
AddModuleMessage("Login Failed. Please Remember That Passwords Are Case Sensitive.", MessageType.Error);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Cancel()
|
|
{
|
|
string ReturnUrl = PageState.QueryString["returnurl"];
|
|
NavigationManager.NavigateTo(ReturnUrl);
|
|
}
|
|
}
|