示例#1
0
        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"));
            }
        }