45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
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<InventoryUser> _userMan;
|
|
private readonly SignInManager<InventoryUser> _signInMan;
|
|
|
|
public LoginController(SignInManager<InventoryUser> signin, UserManager<InventoryUser> 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<SignInResult> 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();
|
|
}
|
|
|