コード例 #1
0
        public async Task <IActionResult> SetPassword(SetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var addPasswordResult = await _userManager.AddPasswordAsync(user, model.NewPassword);

            var addPasswordReturnResult = new Microsoft.AspNetCore.Identity.IdentityResult
            {
            };

            if (!addPasswordResult.Succeeded)
            {
                IdentityResultWeb addPasswordRes = new IdentityResultWeb(addPasswordReturnResult);
                AddErrors(addPasswordRes);
                return(View(model));
            }

            await _signInManager.SignInAsync(user, isPersistent : false);

            StatusMessage = "Your password has been set.";

            return(RedirectToAction(nameof(SetPassword)));
        }
コード例 #2
0
        private async Task <User> createUserAsync(AddUserViewModel model)//Debe retornar el usuario
        {
            //2. Creamos el objeto user con los atributos capturados del modelo
            User user = new User
            {
                Address     = model.Address,
                Document    = model.Document,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username
            };

            //3. Creamos el usuario usando el userHelper y el user que acabamos de crear
            Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.AddUserAsync(user, model.Password);

            if (result.Succeeded)//4. Si lo pudo crear lo traemos de nuevo en nuestra variable user
            {
                user = await _userHelper.GetUserByEmailAsync(model.Username);

                //5. Ahora le agregamos el rol a este usuario
                await _userHelper.AddUserToRoleAsync(user, "Owner");

                //6. retornamos el usuario
                return(user);
            }
            //7. si falla retornamos null
            return(null);
        }
コード例 #3
0
        /// <summary>
        /// Adds some default values to the Database
        /// </summary>
        public void SeedData()
        {
            using var scope = _scopeFactory.CreateScope();
            var dbInitializer     = scope.ServiceProvider.GetRequiredService <DbInitializerService>();
            var createAdminResult = dbInitializer.CreateAdminUserAsync().Result;

            if (createAdminResult == (null, IdentityResult.Failed()))
            {
                throw new InvalidOperationException(createAdminResult.Item2.DumpErrors());
            }

            using var db = scope.ServiceProvider.GetRequiredService <BehlogContext>();
            if (!db.Roles.Any())
            {
                db.Add(new Role(Consts.Role_Admin));
                db.SaveChanges();
            }

            var adminUser       = createAdminResult.Item1;
            var defaultLanguage = _languageSvc
                                  .CreateDefaultLanguagesAndReturnDefaultLanguageAsync()
                                  .Result;

            dbInitializer.CreateDefaultWebsite(
                db,
                adminUser,
                defaultLanguage.Adapt <Language>()
                );
        }
コード例 #4
0
        private async Task <User> CreateUserAsync(AddUserViewModel model)
        {
            User user = new User
            {
                Address     = model.Address,
                Document    = model.Document,
                Email       = model.Username,
                FirstName   = model.FirstName,
                LastName    = model.LastName,
                PhoneNumber = model.PhoneNumber,
                UserName    = model.Username
            };

            Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.AddUserAsync(user, model.Password);

            if (result.Succeeded)
            {
                user = await _userHelper.GetUserByEmailAsync(model.Username);

                await _userHelper.AddUserToRoleAsync(user, "Owner");

                return(user);
            }
            return(null);
        }
コード例 #5
0
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                // Don't reveal that the user does not exist
                return(RedirectToAction(nameof(ResetPasswordConfirmation)));
            }
            var result = await _userManager.ResetPasswordAsync(user, model.Code, model.Password);

            var returnResult = new Microsoft.AspNetCore.Identity.IdentityResult
            {
            };

            if (result.Succeeded)
            {
                return(RedirectToAction(nameof(ResetPasswordConfirmation)));
            }
            IdentityResultWeb res = new IdentityResultWeb(returnResult);

            AddErrors(res);
            return(View());
        }
コード例 #6
0
        public async Task <IActionResult> ChangePasswordMVC(ChangePasswordViewModel model)
        {
            if (ModelState.IsValid)
            {
                UserEntity user = await _userHelper.GetUserAsync(User.Identity.Name);

                if (user != null)
                {
                    Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction("ChangeUser"));
                    }
                    else
                    {
                        ModelState.AddModelError(string.Empty, result.Errors.FirstOrDefault().Description);
                    }
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "User no found.");
                }
            }

            return(View(model));
        }
コード例 #7
0
        public async Task <IActionResult> ChangePassword(ChangePasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var changePasswordResult = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

            var changePasswordReturnResult = new Microsoft.AspNetCore.Identity.IdentityResult
            {
            };

            if (!changePasswordResult.Succeeded)
            {
                IdentityResultWeb changePasswordRes = new IdentityResultWeb(changePasswordReturnResult);
                AddErrors(changePasswordRes);
                return(View(model));
            }

            await _signInManager.SignInAsync(user, isPersistent : false);

            _logger.LogInformation("User changed their password successfully.");
            StatusMessage = "Your password has been changed.";

            return(RedirectToAction(nameof(ChangePassword)));
        }
コード例 #8
0
        public async Task <IActionResult> Create(AddUserViewModel model)
        {
            if (ModelState.IsValid)
            {
                Userstbl user = new Userstbl
                {
                    Pro_Lote           = model.PRO_LOTE,
                    Pro_Nombres        = model.PRO_NOMBRES,
                    Pro_Apellidos      = model.PRO_APELLIDOS,
                    TipViv             = await _context.TiposViviendatbls.FindAsync(model.TVId),
                    TipPer             = await _context.TipoPersonastbls.FindAsync(model.TPId),
                    Pro_Observaciones  = model.PRO_OBSERVACIONES,
                    Pro_Telefono       = model.PRO_TELEFONO,
                    TipIde             = await _context.TipoIdentificaciontbls.FindAsync(model.TIId),
                    Pro_Identificacion = model.PRO_IDENTIFICACION,
                    Email    = model.Username,
                    UserName = model.Username
                };

                Microsoft.AspNetCore.Identity.IdentityResult response = await _userHelper.AddUserAsync(user, model.Password);

                if (response.Succeeded)
                {
                    Userstbl userInDB = await _userHelper.GetUserByEmailAsync(model.Username);

                    await _userHelper.AddUserToRoleAsync(userInDB, "Customer");

                    var propietario = new Propietariostbl
                    {
                        Vehiculos = new List <Vehiculostbl>(),
                        Negocio   = new List <Negociostbl>(),
                        Pagos     = new List <Pagostbl>(),
                        User      = userInDB,
                    };

                    _context.Propietariostbls.Add(propietario);

                    try
                    {
                        await _context.SaveChangesAsync();

                        return(RedirectToAction(nameof(Index)));
                    }
                    catch (Exception ex)
                    {
                        ModelState.AddModelError(string.Empty, ex.ToString());
                        return(View(model));
                    }
                }
                ModelState.AddModelError(string.Empty, response.Errors.FirstOrDefault().Description);
            }

            model.TipoViviendaVM       = _combosHelper.GetComboTipoVivienda();
            model.TipoIdentificacionVM = _combosHelper.GetComboTipoIdentificacion();
            model.TipoPersonaVM        = _combosHelper.GetComboTipoPersona();
            return(View(model));
        }
コード例 #9
0
        public async Task Update_User_Mongo_Test()
        {
            // Arrange
            LetPortal.Identity.Stores.UserStore userStore = _context.GetUserStore();

            // Act
            Microsoft.AspNetCore.Identity.IdentityResult result = await userStore.UpdateAsync(_context.GenerateUser(), new System.Threading.CancellationToken());

            userStore.Dispose();
            // Assert
            Assert.True(result.Succeeded);
        }
コード例 #10
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = new User
                {
                    UserName = model.Username,
                    Email    = model.Email,
                    Name     = model.Name
                };
                var result = await _userManager.CreateAsync(user, model.Password);

                var returnResult = new Microsoft.AspNetCore.Identity.IdentityResult
                {
                };
                if (result.Succeeded && user.IsApproved)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    //var callbackUrl = Url.EmailConfirmationLink(user.Id, code, Request.Scheme);
                    //await _emailSender.SendEmailConfirmationAsync(model.Email, callbackUrl);

                    var signInUser = new User
                    {
                        UserName = model.Username,
                        Email    = model.Email,
                        Name     = model.Name
                    };

                    await _signInManager.SignInAsync(signInUser, isPersistent : false);

                    _logger.LogInformation("User created a new account with password.");
                    return(RedirectToLocal(returnUrl));
                }
                else
                {
                    IdentityResultWeb res = new IdentityResultWeb(returnResult);
                    AddErrors(res);
                    return(RedirectToAction(nameof(AccountController.Login), "Account"));
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
コード例 #11
0
        public async Task <IActionResult> Register([FromBody] RegisterModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.ToBadRequestErrorModel()));
            }

            var user = new User
            {
                UserName = model.Username,
                Email    = model.Email,
                Name     = model.Name
            };

            var result = await _userManager.CreateAsync(user, model.Password);

            var returnResult = new Microsoft.AspNetCore.Identity.IdentityResult {
            };

            if (result.Succeeded && user.IsApproved)
            {
                _logger.LogInformation("User created a new account with password.");

                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var signInUser = new User
                {
                    UserName = model.Username,
                    Email    = model.Email,
                    Name     = model.Name
                };

                await _signInManager.SignInAsync(signInUser, isPersistent : false);

                _logger.LogInformation("User created a new account with password.");
                return(Ok());
            }
            else
            {
                IdentityResultWeb res = new IdentityResultWeb(returnResult);
                return(Ok());
            }
        }
コード例 #12
0
        public async Task <IActionResult> ExternalLoginConfirmation(ExternalLoginViewModel model, string returnUrl = null)
        {
            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await _signInManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    throw new ApplicationException("Error loading external login information during confirmation.");
                }
                var user = new User {
                    UserName = model.Email, Email = model.Email
                };
                var result = await _userManager.CreateAsync(user);

                var returnResult = new Microsoft.AspNetCore.Identity.IdentityResult
                {
                };
                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

                    if (result.Succeeded)
                    {
                        var signInUser = new User {
                            UserName = model.Email, Email = model.Email
                        };

                        await _signInManager.SignInAsync(signInUser, isPersistent : false);

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(RedirectToLocal(returnUrl));
                    }
                }
                IdentityResultWeb res = new IdentityResultWeb(returnResult);
                AddErrors(res);
            }

            ViewData["ReturnUrl"] = returnUrl;
            return(View(nameof(ExternalLogin), model));
        }
コード例 #13
0
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            UserEntity user = await _userHelper.GetUserAsync(model.UserName);

            if (user != null)
            {
                Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.ResetPasswordAsync(user, model.Token, model.Password);

                if (result.Succeeded)
                {
                    ViewBag.Message = "Password reseteado correctamente.";
                    return(View());
                }

                ViewBag.Message = "Error mientras se reseteaba el password.";
                return(View(model));
            }

            ViewBag.Message = "Usuario no encontrado.";
            return(View(model));
        }
コード例 #14
0
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            UserEntity user = await _userHelper.GetUserAsync(model.UserName);

            if (user != null)
            {
                Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.ResetPasswordAsync(user, model.Token, model.Password);

                if (result.Succeeded)
                {
                    ViewBag.Message = "Password reset successful.";
                    return(View());
                }

                ViewBag.Message = "Error while resetting the password.";
                return(View(model));
            }

            ViewBag.Message = "User not found.";
            return(View(model));
        }
コード例 #15
0
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model)
        {
            UserEntity user = await _userHelper.GetUserAsync(model.UserName);

            if (user != null)
            {
                Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.ResetPasswordAsync(user, model.Token, model.Password);

                if (result.Succeeded)
                {
                    ViewBag.Message = "La contraseña se reestableció satisfactoriamente.";
                    return(View());
                }

                ViewBag.Message = "Error al reestablecer la contraseña.";
                return(View(model));
            }

            ViewBag.Message = "Usuario no encontrado.";
            return(View(model));
        }
コード例 #16
0
        public async Task <IActionResult> ConfirmEmail(string userId, string token)
        {
            if (string.IsNullOrEmpty(userId) || string.IsNullOrEmpty(token))
            {
                return(NotFound());
            }

            UserEntity user = await _userHelper.GetUserAsync(new Guid(userId));

            if (user == null)
            {
                return(NotFound());
            }

            Microsoft.AspNetCore.Identity.IdentityResult result = await _userHelper.ConfirmEmailAsync(user, token);

            if (!result.Succeeded)
            {
                return(NotFound());
            }
            return(View());
        }
コード例 #17
0
 public static IdentityResult ToApplicationResult(this Microsoft.AspNetCore.Identity.IdentityResult result)
 {
     return(result.Succeeded
         ? IdentityResult.Success()
         : IdentityResult.Failure(result.Errors.Select(e => e.Description)));
 }
コード例 #18
0
ファイル: SCS021Controller.cs プロジェクト: kuroiouji/c.s.i
        public async Task <IActionResult> UpdateUser([FromBody] Common.DataSvc.Models.UserDo entity)
        {
            return(await this.ControllerResult(async (Web.Models.ResultData result) =>
            {
                bool currentUser = this.User.Identity.Name == entity.UserName;
                bool changePassword = (entity.Password != FAKE_PASSWORD);

                entity.UpdateDate = Utils.IOUtil.GetCurrentDateTimeTH;
                entity.UpdateUser = this.User.Identity.Name;

                Web.Models.User.ApplicationUser user = await this._userManager.FindByNameAsync(entity.UserName);
                if (user != null)
                {
                    user.GroupID = entity.GroupID;
                    user.FlagActive = entity.FlagActive;
                    user.FlagSystemAdmin = entity.FlagSystemAdmin;
                    user.PasswordAge = entity.PasswordAge;
                    user.Remark = entity.Remark;

                    if (changePassword && entity.Password != null)
                    {
                        user.LastUpdatePasswordDate = entity.UpdateDate;

                        Web.Validator.UserPasswordValidator <Web.Models.User.ApplicationUser> validator
                            = new Web.Validator.UserPasswordValidator <Web.Models.User.ApplicationUser>();
                        Microsoft.AspNetCore.Identity.IdentityResult pres = await validator.ValidateAsync(_userManager, user, entity.Password);
                        if (!pres.Succeeded)
                        {
                            foreach (var error in pres.Errors)
                            {
                                result.AddError(error.Code, error.Description);
                            }
                        }
                        else
                        {
                            await this._userManager.RemovePasswordAsync(user);
                            pres = await this._userManager.AddPasswordAsync(user, entity.Password);
                            if (!pres.Succeeded)
                            {
                                foreach (var error in pres.Errors)
                                {
                                    result.AddError(error.Code, error.Description);
                                }
                            }
                        }
                    }
                    if (result.Errors.Count == 0)
                    {
                        var res = await this._userManager.UpdateAsync(user);
                        if (!res.Succeeded)
                        {
                            foreach (var error in res.Errors)
                            {
                                result.AddError(error.Code, error.Description);
                            }
                        }
                        else
                        {
                            entity.UserID = user.Id;

                            Common.DataSvc.Models.UserCriteriaDo criteria = new DataSvc.Models.UserCriteriaDo();
                            criteria.UserName = entity.UserName;

                            result.Data = await Task.Run(() =>
                            {
                                this._commonSvcDbContext.UpdateUserInfo(entity);

                                DataSvc.Models.UserDo nuser = this._commonSvcDbContext.GetUser(criteria);
                                nuser.Password = FAKE_PASSWORD;

                                return new
                                {
                                    IsCurrentUser = currentUser,
                                    User = nuser,
                                    Permissions = this._commonSvcDbContext.GetUserPermission(criteria)
                                };
                            });
                        }
                    }
                }
            }));
        }
コード例 #19
0
        public async Task <(User, IdentityResult)> CreateAdminUserAsync()
        {
            var adminUser = await _userManager.FindByNameAsync(AdminUserSeedInfo.Username);

            if (adminUser != null)
            {
                _logger.LogInformation($"{AdminUserSeedInfo.Username} already existed.");
                return(adminUser,
                       IdentityResult.Success
                       );
            }

            var adminRole = await _roleManager.FindByNameAsync(AdminUserSeedInfo.RoleName);

            if (adminRole != null)
            {
                _logger.LogInformation($"{AdminUserSeedInfo.RoleName} role already existed.");
            }
            else
            {
                adminRole = new Role(AdminUserSeedInfo.RoleName);
                var roleResult = await _roleManager.CreateAsync(adminRole);

                if (roleResult == IdentityResult.Failed())
                {
                    _logger.LogError($"'{adminRole.Name}' role creating has failed. {roleResult.DumpErrors()}");
                    return(null,
                           IdentityResult.Failed()
                           );
                }
            }

            adminUser = new User {
                UserName       = AdminUserSeedInfo.Username,
                Email          = AdminUserSeedInfo.Email,
                EmailConfirmed = true,
                RegisterDate   = _dateSvc.UtcNow(),
                Title          = AdminUserSeedInfo.Title,
                LockoutEnabled = true,
                Status         = UserStatus.Enabled
            };

            var result = await _userManager.CreateAsync(adminUser, AdminUserSeedInfo.Password);

            if (result == IdentityResult.Failed())
            {
                _logger.LogError($"'{AdminUserSeedInfo.Username}; user creation has failed. {result.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            var setLockoutResult = await _userManager.SetLockoutEnabledAsync(adminUser, enabled : false);

            if (setLockoutResult == IdentityResult.Failed())
            {
                _logger.LogError($"'{AdminUserSeedInfo.Username}' setLockout on user has failed. {setLockoutResult.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            var addRoleResult = await _userManager.AddToRoleAsync(adminUser, AdminUserSeedInfo.RoleName);

            if (addRoleResult == IdentityResult.Failed())
            {
                _logger.LogError($"Adding user:'******' to role:'{AdminUserSeedInfo.RoleName}' has failed. {addRoleResult.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            return(
                adminUser,
                IdentityResult.Success
                );
        }