public async Task <IActionResult> Create(Utilisateur utilisateur, string mdp) { //vérification pour savoir si le pseudo est libre ou pas if (await _utilisateurManager.PseudoExist(utilisateur.Pseudo)) //si pas libre on renvoie le formulaire { ViewBag.error = "Ce pseudo n'est pas disponible."; //pour le DDL des roles var listeRoles = _context.Roles.ToList(); ViewBag.listeRoles = new SelectList(listeRoles, "Id", "Name"); return(View(utilisateur)); } //vérification que le mail n est pas deja pris par qlq un if (await _utilisateurManager.EmailExist(utilisateur.Email)) { ViewBag.errorEmail = "Ce mail est déjà pris par un utilisateur."; //pour le DDL des roles var listeRoles = _context.Roles.ToList(); ViewBag.listeRoles = new SelectList(listeRoles, "Id", "Name"); return(View(utilisateur)); } //vérif qu un role a bien été selectionné if (utilisateur.Role == null) { ViewBag.errorRole = "Un rôle doit être choisi pour l'utilisateur."; //pour le DDL des roles var listeRoles = _context.Roles.ToList(); ViewBag.listeRoles = new SelectList(listeRoles, "Id", "Name"); return(View(utilisateur)); } //date de la creation utilisateur.DateCreationUtilisateur = DateTime.Now; if (!ModelState.IsValid) { return(View(utilisateur)); } else { //créer un applicationUser var user = new ApplicationUser { UserName = utilisateur.Email, Email = utilisateur.Email, EmailConfirmed = true }; var result = await _userManager.CreateAsync(user, mdp); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); //Pour le role string role = _context.Roles.Where(r => r.Id == utilisateur.Role).FirstOrDefault().ToString(); var roleUtilisateur = await _userManager.AddToRoleAsync(user, role); // ajoute son role await _context.SaveChangesAsync(); // save for role _logger.LogInformation("Create role for user"); // var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); // a voir // await _signInManager.SignInAsync(user, isPersistent: false); _logger.LogInformation("User created a new account with password."); //création d'un utilisateur "vide" Utilisateur nouvel_utilisateur = new Utilisateur { ApplicationUserID = user.Id, Pseudo = utilisateur.Pseudo, DateCreationUtilisateur = DateTime.Now, ProfilUtilisateurComplet = true, ConfirmEmail = user.EmailConfirmed, Email = user.Email, DateDeNaissance = utilisateur.DateDeNaissance, Role = role, UrlAvatarImage = "/images/userDefault.png" }; await _utilisateurManager.AddUtilisateurAdmin(nouvel_utilisateur); //ajoute le nouvel utilisateur } ViewData["Message"] = "L'utilisateur a bien été ajouté"; return(RedirectToAction("Index")); } }