Wave/Wave/Components/Account/Pages/Manage/Partials/ProfileFormPartial.razor

53 lines
1.6 KiB
Plaintext

@using Wave.Data
@using Microsoft.AspNetCore.Identity
@using System.ComponentModel.DataAnnotations
@inject UserManager<ApplicationUser> UserManager
@inject SignInManager<ApplicationUser> SignInManager
@inject IStringLocalizer<Wave.Components.Account.Pages.Manage.Index> Localizer
<EditForm FormName="update-profile" Model="@Model" OnValidSubmit="@OnValidSubmit" method="post" Enhance="false">
<DataAnnotationsValidator />
<label class="form-control w-full">
<div class="label">
<span class="label-text">@Localizer["FullName_Label"]</span>
</div>
<InputText class="input input-bordered w-full" maxlength="64" autocomplete="name"
@bind-Value="@Model.FullName" placeholder="@Localizer["FullName_Placeholder"]" />
<div class="label">
<span class="label-text-alt text-error">
<ValidationMessage For="() => Model.FullName" />
</span>
</div>
</label>
<button type="submit" class="btn btn-primary w-full">
@Localizer["Submit"]
</button>
</EditForm>
@code {
[Parameter]
public required ApplicationUser? User { get; set; }
[SupplyParameterFromForm(FormName = "update-profile")]
private InputModel Model { get; set; } = new();
protected override void OnInitialized() {
Model.FullName ??= User?.FullName;
}
private async Task OnValidSubmit() {
if (User is null) return;
User.FullName = Model.FullName?.Trim();
await UserManager.UpdateAsync(User);
await SignInManager.RefreshSignInAsync(User);
// Message = Localizer["FullName_Success"];
}
private sealed class InputModel {
[MaxLength(64)]
public string? FullName { get; set; }
}
}