public async Task <IActionResult> RegisterAsync(RegisterViewModel registerViewModel) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } User user = new User() { UserPassword = service.HashPassword(null, registerViewModel.Password), UserEmail = registerViewModel.Email, UserFirstname = registerViewModel.Prenom, UserName = registerViewModel.Nom, UserPoleId = registerViewModel.PoleId, UserPhone = registerViewModel.PhoneNumber, UserNumpermis = registerViewModel.NumPermis }; //Vérification de l'email IdentityResult result = _authService.VerifUser(user, registerViewModel.Password); if (!result.Succeeded) { ModelState.AddModelError("Error", result.Errors.First().Description); return(BadRequest(ModelState)); } // Ajout du rôle à l'utilisateur IdentityResult result2 = _authService.AddToRoleUserAsync(user); if (!result2.Succeeded) { ModelState.AddModelError("Error", result2.Errors.First().Description); return(BadRequest(ModelState)); } // verification de l'unicité du téléphone IdentityResult result3 = _authService.VerifPhoneNumber(user); if (!result3.Succeeded) { ModelState.AddModelError("Error", result3.Errors.First().Description); return(BadRequest(ModelState)); } // mise à jour de l'état du compte à en attente user.UserState = (sbyte)Enums.UserState.InWaiting; try { _context.User.Add(user); _context.SaveChanges(); _context.Dispose(); } catch (Exception e) { ModelState.AddModelError("Error", "Une erreur est survenue." + e.Message); Console.WriteLine(e); return(BadRequest(ModelState)); } // token valide 10 mins var tokenGenerate = TokenService.GenerateToken(user); string myFiles = System.IO.File.ReadAllText(ConstantsEmail.RegisterPath); myFiles = myFiles.Replace("%%LIEN%%", Environment.GetEnvironmentVariable("UrlVerifEmail") + tokenGenerate); myFiles = myFiles.Replace("%%USERNAME%%", user.UserFirstname); try { var response = await EmailService.SendEmailAsync("Confirmez votre e-mail - BookYourCar", myFiles, user.UserEmail); } catch (Exception e) { ModelState.AddModelError("Error", "Une erreur s'est produite sur l'envoi de mail." + e.Message); return(BadRequest(ModelState)); } return(Ok()); }