namespace GrossesMitainesAPI.Controllers; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using GrossesMitainesAPI.Data; using SignInResult = Microsoft.AspNetCore.Identity.SignInResult; using Microsoft.AspNetCore.Authentication.Cookies; using System.Security.Principal; using GrossesMitainesAPI.Models; [EnableCors("_myAllowSpecificOrigins"), ApiController, Route("api"), Authorize(AuthenticationSchemes = "Identity.Application")] public class LoginController : Controller { private readonly UserManager _userMan; private readonly SignInManager _signInMan; public LoginController(SignInManager signin, UserManager userman) { this._signInMan = signin; this._userMan = userman; } public class LoginUser { public string email { get; set; } = ""; public string password { get; set; } = ""; } [HttpGet, Route("Login")] public ReturnUserViewModel WhoAmI() { var user = _userMan.GetUserAsync(_signInMan.Context.User); user.Wait(); return new ReturnUserViewModel(user.Result); } [HttpPost, Route("Login"), AllowAnonymous] public async Task Login(LoginUser user, bool rememberMe = false) { return await _signInMan.PasswordSignInAsync(await _userMan.FindByEmailAsync(user.email), user.password, rememberMe, false); } [HttpPost, Route("Logout")] public void Logout() => _signInMan.SignOutAsync(); }