Files
GGMM/GrossesMitaines/GrossesMitainesAPI/Controllers/LoginController.cs

54 lines
1.9 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 RoleManager<IdentityRole> _roleMan;
private readonly SignInManager<InventoryUser> _signInMan;
public LoginController(SignInManager<InventoryUser> signin, UserManager<InventoryUser> userman, RoleManager<IdentityRole> roleMan) {
this._signInMan = signin;
this._userMan = userman;
this._roleMan = roleMan;
}
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();
var roles = _userMan.GetRolesAsync(user.Result);
roles.Wait();
string role = "";
if (roles.Result.Contains("Administrateur"))
role = "Administrateur";
else role = "Client";
return new ReturnUserViewModel(user.Result, role);
}
[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();
}