using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using MyDarling.Models; namespace MyDarling.Controllers; public class AccountController : Controller { public UserManager UserManager { get; set; } private SignInManager SignInManager; public AccountController(UserManager userManager, SignInManager signInManager) { UserManager = userManager; SignInManager = signInManager; } [Authorize] public IActionResult List() { return View(UserManager.Users); } [Authorize] public IActionResult Create() { return View(new IdentityUser()); } [HttpPost] [Authorize] public async Task Create([Bind] IdentityUser user, [Bind] string Password) { if (ModelState.IsValid) { IdentityResult result = await UserManager.CreateAsync(user, Password); if (result.Succeeded) { return RedirectToAction(nameof(List)); } foreach (IdentityError error in result.Errors) { ModelState.AddModelError("", error.Description); } } return View(); } public ViewResult Login(string returlUrl) { return View(new LoginModel { ReturnUrl = returlUrl }); } [HttpPost] public async Task Login(LoginModel loginModel) { if (ModelState.IsValid) { IdentityUser user = await UserManager.FindByNameAsync(loginModel.Name); if (user != null) { await SignInManager.SignOutAsync(); if ((await SignInManager.PasswordSignInAsync(user, loginModel.Password, false, false)) .Succeeded) { return Redirect(loginModel?.ReturnUrl ?? "/Bundle"); } } ModelState.AddModelError("", "Invalid name or password"); } return View(loginModel); } [Authorize] public async Task Logout(string returlUrl = "/Account/Login") { await SignInManager.SignOutAsync(); return Redirect(returlUrl); } }