예제 #1
0
        protected async Task <RetourDeService <Utilisateur> > CréeUtilisateur(ICréeCompteVue vue)
        {
            RetourDeService <Utilisateur> retour = await UtilisateurService.CréeUtilisateur(vue);

            if (retour.Type == TypeRetourDeService.IdentityError)
            {
                IEnumerable <IdentityError> errors = (IEnumerable <IdentityError>)retour.Objet;
                foreach (IdentityError error in errors)
                {
                    if (error.Code == IdentityErrorCodes.DuplicateUserName)
                    {
                        ErreurDeModel.AjouteAModelState(ModelState, "email", "nomPris");
                    }
                    else
                    {
                        ErreurDeModel.AjouteAModelState(ModelState, error.Code);
                    }
                }
            }
            return(retour);
        }
예제 #2
0
        /// <summary>
        /// Ajoute à la bdd un nouvel Utilisateur à partir de son Email et de son mot de passe.
        /// </summary>
        /// <param name="vue">objet ayant l'Email et le Password de l'utilisateur à créer</param>
        /// <returns></returns>
        public async Task <RetourDeService <Utilisateur> > CréeUtilisateur(ICréeCompteVue vue)
        {
            Utilisateur applicationUser = new Utilisateur
            {
                UserName = vue.Email,
                Email    = vue.Email,
                Etat     = EtatUtilisateur.Nouveau
            };

            try
            {
                IdentityResult identityResult = await _userManager.CreateAsync(applicationUser, vue.Password);

                if (!identityResult.Succeeded)
                {
                    return(new RetourDeService <Utilisateur>(identityResult));
                }

                ArchiveUtilisateur archive = new ArchiveUtilisateur
                {
                    Id    = applicationUser.Id,
                    Email = applicationUser.Email,
                    Etat  = EtatUtilisateur.Nouveau,
                    Date  = DateTime.Now
                };
                _context.ArchiveUtilisateur.Add(archive);
                await SaveChangesAsync();

                return(new RetourDeService <Utilisateur>(applicationUser));
            }
            catch (DbUpdateConcurrencyException)
            {
                return(new RetourDeService <Utilisateur>(TypeRetourDeService.ConcurrencyError));
            }
            catch (Exception)
            {
                return(new RetourDeService <Utilisateur>(TypeRetourDeService.Indéterminé));
            }
        }