using Hcs.WebApp.Data; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Radzen; namespace Hcs.WebApp.Controllers { [Route("identity/[action]")] public class IdentityController( IUserStore userStore, UserManager userManager, SignInManager signInManager) : Controller { private readonly IUserStore userStore = userStore; private readonly UserManager userManager = userManager; private readonly SignInManager signInManager = signInManager; [HttpPost] public async Task Register(string userName, string password, string returnUrl) { var user = Activator.CreateInstance(); await userStore.SetUserNameAsync(user, userName, CancellationToken.None); var result = await userManager.CreateAsync(user, password); if (!result.Succeeded) { var errors = string.Join(", ", result.Errors.Select(error => error.Description)); if (!string.IsNullOrEmpty(returnUrl)) { return Redirect($"/account/register?errors={errors}&returnUrl={Uri.EscapeDataString(returnUrl)}"); } else { return Redirect($"/account/register?errors={errors}"); } } await signInManager.SignInAsync(user, isPersistent: false); if (string.IsNullOrEmpty(returnUrl)) { Redirect("/"); } return Redirect(returnUrl); } public async Task Logout() { await signInManager.SignOutAsync(); return Redirect("/"); } } }