コード例 #1
0
        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());
        }
コード例 #2
0
ファイル: Seed.cs プロジェクト: pvaz/www.taxi-gestion.ch
 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;
     }
     //}
 }
コード例 #3
0
        /// <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));
        }
コード例 #4
0
        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));
        }