158 lines
5.3 KiB
Plaintext
158 lines
5.3 KiB
Plaintext
@namespace Oqtane.Modules.Admin.Users
|
|
@inherits ModuleBase
|
|
@inject NavigationManager NavigationManager
|
|
@inject IUserService UserService
|
|
@inject IProfileService ProfileService
|
|
@inject ISettingService SettingService
|
|
|
|
@if (profiles != null)
|
|
{
|
|
<table class="table table-borderless">
|
|
<tr>
|
|
<td>
|
|
<label class="control-label">Username: </label>
|
|
</td>
|
|
<td>
|
|
<input class="form-control" @bind="@username" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label class="control-label">Password: </label>
|
|
</td>
|
|
<td>
|
|
<input type="password" class="form-control" @bind="@password" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label class="control-label">Confirm Password: </label>
|
|
</td>
|
|
<td>
|
|
<input type="password" class="form-control" @bind="@confirm" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label class="control-label">Email: </label>
|
|
</td>
|
|
<td>
|
|
<input class="form-control" @bind="@email" />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<label class="control-label">Full Name: </label>
|
|
</td>
|
|
<td>
|
|
<input class="form-control" @bind="@displayname" />
|
|
</td>
|
|
</tr>
|
|
|
|
@foreach (Profile profile in profiles)
|
|
{
|
|
var p = profile;
|
|
if (p.Category != category)
|
|
{
|
|
<tr>
|
|
<th colspan="2" style="text-align: center;">
|
|
@p.Category
|
|
</th>
|
|
</tr>
|
|
category = p.Category;
|
|
}
|
|
<tr>
|
|
<td>
|
|
<label for="@p.Name" class="control-label">@p.Title: </label>
|
|
</td>
|
|
<td>
|
|
<input class="form-control" maxlength="@p.MaxLength" placeholder="@p.Description" @onchange="@(e => ProfileChanged(e, p.Name))" />
|
|
</td>
|
|
</tr>
|
|
}
|
|
</table>
|
|
<button type="button" class="btn btn-primary" @onclick="SaveUser">Save</button>
|
|
<NavLink class="btn btn-secondary" href="@NavigateUrl()">Cancel</NavLink>
|
|
}
|
|
|
|
@code {
|
|
private string username = string.Empty;
|
|
private string password = string.Empty;
|
|
private string confirm = string.Empty;
|
|
private string email = string.Empty;
|
|
private string displayname = string.Empty;
|
|
private List<Profile> profiles;
|
|
private Dictionary<string, string> settings;
|
|
private string category = string.Empty;
|
|
|
|
public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
try
|
|
{
|
|
profiles = await ProfileService.GetProfilesAsync(ModuleState.SiteId);
|
|
settings = new Dictionary<string, string>();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Loading User Profile {Error}", ex.Message);
|
|
AddModuleMessage("Error Loading User Profile", MessageType.Error);
|
|
}
|
|
}
|
|
|
|
private async Task SaveUser()
|
|
{
|
|
try
|
|
{
|
|
if (username != string.Empty && password != string.Empty && confirm != string.Empty && email != string.Empty)
|
|
{
|
|
if (password == confirm)
|
|
{
|
|
var user = new User();
|
|
user.SiteId = PageState.Site.SiteId;
|
|
user.Username = username;
|
|
user.Password = password;
|
|
user.Email = email;
|
|
user.DisplayName = string.IsNullOrWhiteSpace(displayname) ? username : displayname;
|
|
user.PhotoFileId = null;
|
|
|
|
user = await UserService.AddUserAsync(user);
|
|
|
|
if (user != null)
|
|
{
|
|
await SettingService.UpdateUserSettingsAsync(settings, user.UserId);
|
|
await logger.LogInformation("User Created {User}", user);
|
|
NavigationManager.NavigateTo(NavigateUrl());
|
|
}
|
|
else
|
|
{
|
|
await logger.LogError("Error Adding User {Username} {Email}", username, email);
|
|
AddModuleMessage("Error Adding User. Please Ensure Password Meets Complexity Requirements And Username Is Not Already In Use.", MessageType.Error);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AddModuleMessage("Passwords Entered Do Not Match", MessageType.Warning);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
AddModuleMessage("You Must Provide A Username, Password, and Email Address", MessageType.Warning);
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
await logger.LogError(ex, "Error Adding User {Username} {Email} {Error}", username, email, ex.Message);
|
|
AddModuleMessage("Error Adding User", MessageType.Error);
|
|
}
|
|
}
|
|
|
|
private void ProfileChanged(ChangeEventArgs e, string SettingName)
|
|
{
|
|
var value = (string)e.Value;
|
|
settings = SettingService.SetSetting(settings, SettingName, value);
|
|
}
|
|
|
|
}
|