public async Task <IActionResult> Inscription(DtoTGA001InpDA01UtilisateurPourInscription dto) { dto.NomUtilisateur = dto.NomUtilisateur.ToLower(); if (await _repo.UtilisateurExiste(dto.NomUtilisateur)) { return(BadRequest($"L'utilisateur « { tinfo.ToTitleCase(dto.NomUtilisateur) } » existe déjà")); } if (await _repo.EmailExiste(dto.Email)) { return(BadRequest($"L'e-mail « { dto.Email } » existe déjà")); } if (!Array.Exists(this._npa4Array, x => x == dto.CodePostal)) { return(BadRequest($"Le code postal « { dto.CodePostal } » n'est pas supporté par cette application")); } var userToCreate = new DA01Utilisateur { NomUtilisateur = dto.NomUtilisateur, EMail = dto.Email }; var clientToCreate = new DA10Client { NomDeFamille = dto.NomDeFamille, Prenom = dto.Prenom, Adresse = dto.Adresse, CodePostal = dto.CodePostal }; var userCreate = await _repo.Inscription(userToCreate, clientToCreate, dto.MotDePasse); using (var message = new MailMessage()) { message.To.Add(new MailAddress(userCreate.EMail, userCreate.Client.Prenom + " " + userCreate.Client.NomDeFamille)); message.From = new MailAddress("*****@*****.**", "Taxi Gestion"); message.Subject = "TaxiGestion - Veuillez confirmer votre e-mail pour activer votre compte"; string body = System.IO.File.ReadAllText("EMail/confirmation-email-client.html"); body = body.Replace("#Prenom#", userCreate.Client.Prenom); body = body.Replace("#Nom#", userCreate.Client.NomDeFamille); body = body.Replace("#Url#", "https://www.taxi-gestion.ch/e-mail/confirmation-inscription/" + userCreate.Id + "/" + userCreate.MotDePasseEMailConfirmation); message.IsBodyHtml = true; message.Body = body; using var client = new SmtpClient(_config.GetSection("Email:Smtp").Value) { Port = Int32.Parse(_config.GetSection("Email:Port").Value) }; client.Send(message); } return(Ok()); }
public void SeedDA01UtilisateurPedro(out int noUser, out int noClient) { /* * var userData = File.ReadAllText("Data/Seed/DA01Utilisateur.json"); * var users = JsonConvert.DeserializeObject<List<DA01Utilisateur>>(userData); * foreach (var user in users) * {*/ noUser = 0; noClient = 0; if (!_context.DA01Utilisateur.Any(x => x.NomUtilisateur == "pedro")) // user.NomUtilisateur)) { var client = new DA10Client() { NomDeFamille = "Pedroli", Prenom = "Pedro", Adresse = "1 rue de nule part", CodePostal = "1228", }; _context.DA10Client.Add(client); _context.SaveChanges(); noClient = client.Id; var user = new DA01Utilisateur() { NomUtilisateur = "pedro", EMail = "*****@*****.**", IdClient = client.Id }; CreerMotDePasseHash("password", out byte[] passwordHash, out byte[] passwordSalt); user.MotDePasseHash = passwordHash; user.MotDePasseSalt = passwordSalt; user.NomUtilisateur = user.NomUtilisateur.ToLower(); user.DateCreation = DateTime.Now; user.SwActive = true; user.SwActiveClient = true; user.SwEMailConfirmation = true; user.MotDePasseEMailConfirmation = "test2"; _context.DA01Utilisateur.Add(user); _context.SaveChanges(); client.UtilisateurAdminId = user.Id; _context.DA10Client.Update(client); _context.SaveChanges(); noUser = user.Id; } //} }
/// <summary> /// Création d'une compte client et utilisateur /// </summary> /// <param name="record">Donnée nom d'utilisateur</param> /// <param name="motDePasse">Mot de passe</param> /// <returns></returns> public async Task <DA01Utilisateur> Inscription(DA01Utilisateur record, DA10Client recordClient, string motDePasse) { var recordDA10 = new DA10Client() { NomDeFamille = recordClient.NomDeFamille, Prenom = recordClient.Prenom, Adresse = recordClient.Adresse, CodePostal = recordClient.CodePostal }; await _context.DA10Client.AddAsync(recordDA10); await _context.SaveChangesAsync(); record.IdClient = recordDA10.Id; record.SwActiveClient = false; record.SwActive = false; record.SwEMailConfirmation = false; record.DateCreation = DateTime.Now; CreerMotDePasseHash(motDePasse, out byte[] motDePasseHash, out byte[] motDePasseSalt); record.MotDePasseHash = motDePasseHash; record.MotDePasseSalt = motDePasseSalt; record.DateCreation = DateTime.Now; using (SHA512 sha512Hash = SHA512.Create()) { byte[] sourceBytes = Encoding.UTF8.GetBytes(record.DateCreation.ToString()); byte[] hashBytes = sha512Hash.ComputeHash(sourceBytes); record.MotDePasseEMailConfirmation = BitConverter.ToString(hashBytes).Replace("-", String.Empty); } await _context.DA01Utilisateur.AddAsync(record); await _context.SaveChangesAsync(); recordDA10.UtilisateurAdminId = record.Id; _context.DA10Client.Update(recordDA10); await _context.SaveChangesAsync(); return(await _context.DA01Utilisateur.FirstOrDefaultAsync(x => x.Id == record.Id)); }
public async Task Inscription() { var dto = new DtoTGA001InpDA01UtilisateurPourInscription() { NomUtilisateur = "stephane", MotDePasse = "password", Email = "*****@*****.**", Prenom = "Stéphane", NomDeFamille = "Bressani", Adresse = "16A ch. des Buclines", CodePostal = "1224", Lieu = "Chêne-Bougeries" }; using var context = new DataContext(this.DA001TestDbContext().Options); // Connection au repository var repo = new AuthentificationRepository(context); context.Database.EnsureCreated(); var userToCreate = new DA01Utilisateur { NomUtilisateur = dto.NomUtilisateur, EMail = dto.Email }; var clientToCreate = new DA10Client { Prenom = dto.Prenom, NomDeFamille = dto.NomDeFamille, Adresse = dto.Adresse, CodePostal = dto.CodePostal, Lieu = dto.Lieu }; await repo.Inscription(userToCreate, clientToCreate, dto.MotDePasse); Assert.True(await repo.UtilisateurExiste(dto.NomUtilisateur)); }