signup fonctionnel
This commit is contained in:
@@ -1,44 +1,92 @@
|
||||
using GrossesMitainesAPI.Data;
|
||||
namespace GrossesMitainesAPI.Controllers;
|
||||
|
||||
#region Dependencies
|
||||
using GrossesMitainesAPI.Data;
|
||||
using GrossesMitainesAPI.Models;
|
||||
using Microsoft.AspNet.Identity;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Cors;
|
||||
using Microsoft.AspNetCore.Identity;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Net.Mime;
|
||||
|
||||
#endregion
|
||||
|
||||
namespace GrossesMitainesAPI.Controllers;
|
||||
[EnableCors("_myAllowSpecificOrigins"), ApiController, Route("api/[controller]"),
|
||||
Authorize(AuthenticationSchemes = "Identity.Application", Roles = "Administrateur")]
|
||||
public class UserController : Controller {
|
||||
private readonly UserManager<InventoryUser> _userMan;
|
||||
#region DI Fields
|
||||
private readonly Microsoft.AspNetCore.Identity.UserManager<InventoryUser> _userMan;
|
||||
private readonly SignInManager<InventoryUser> _signInMan;
|
||||
private readonly InventoryContext _context;
|
||||
private readonly ILogger<UserController> _logger;
|
||||
|
||||
public UserController(ILogger<UserController> logger, SignInManager<InventoryUser> signin, UserManager<InventoryUser> userman) {
|
||||
#endregion
|
||||
|
||||
#region Ctor
|
||||
public UserController(ILogger<UserController> logger,
|
||||
SignInManager<InventoryUser> signin,
|
||||
Microsoft.AspNetCore.Identity.UserManager<InventoryUser> userman,
|
||||
InventoryContext context) {
|
||||
_logger = logger;
|
||||
_signInMan = signin;
|
||||
_userMan = userman;
|
||||
_context = context;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region API Methods
|
||||
[HttpPost, AllowAnonymous]
|
||||
public async Task<ActionResult<ReturnUserViewModel>> Post(SignUpUserModel sign) {
|
||||
public ActionResult<ReturnUserViewModel> Post(SignUpUserModel sign) {
|
||||
InventoryUser usr;
|
||||
try {
|
||||
usr = new(sign);
|
||||
} catch {
|
||||
return BadRequest("Erreur utilisateur");
|
||||
} catch (Exception e){
|
||||
return BadRequest($"Erreur utilisateur: {e.Message}");
|
||||
}
|
||||
|
||||
try {
|
||||
usr.PasswordHash = new PasswordHasher<InventoryUser>().HashPassword(usr, sign.Password);
|
||||
} catch {
|
||||
return BadRequest("Erreur de mot de passe.");
|
||||
} catch (Exception e){
|
||||
return BadRequest($"Erreur de mot de passe: {e.Message}");
|
||||
}
|
||||
try {
|
||||
await _userMan.CreateAsync(usr);
|
||||
await _userMan.AddToRoleAsync(usr, "Client");
|
||||
var t1 = _userMan.CreateAsync(usr);
|
||||
t1.Wait();
|
||||
var t2 = _userMan.AddToRoleAsync(usr, "Client");
|
||||
t2.Wait();
|
||||
|
||||
} catch (Exception e) {
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
|
||||
return new ReturnUserViewModel(usr, "Client");
|
||||
}
|
||||
|
||||
[HttpGet, Route("Adresses")]
|
||||
public async Task<ActionResult<AddressModel>> GetAddresses(bool? all) {
|
||||
IList<string> roles;
|
||||
string id;
|
||||
try { // Trouver les rôles de l'utilisateur, assumer non-admin si impossible à trouver.
|
||||
roles = await _userMan.GetRolesAsync(await _userMan.GetUserAsync(_signInMan.Context.User));
|
||||
} catch (Exception e) {
|
||||
_logger.LogError(10, e.Message);
|
||||
roles = new List<string>();
|
||||
}
|
||||
|
||||
try {
|
||||
id = _signInMan.Context.User.Identity.GetUserId();
|
||||
if (all is not null && all == true && roles.Contains("Administrateur"))
|
||||
return Ok(_context.Addresses.Include("AspNetUser").ToList());
|
||||
else return Ok(_context.Users.Include("Adresses").Where(x => x.Id == id).ToList());
|
||||
} catch (Exception e) {
|
||||
_logger.LogError(10, e.Message);
|
||||
return BadRequest(e.Message);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user