public async Task <IActionResult> EditPassword(Models.AccountViewModels.ManageUserViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                if (!model.PasswordEditViewModel.NewPassword.Equals(model.PasswordEditViewModel.NewPasswordConfirmation))
                {
                    ModelState.AddModelError(string.Empty, "Your new password does not match your password confirmation");
                    return(RedirectToAction("Manage", "Account"));
                }

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

                user.PasswordHash = _userManager.PasswordHasher.HashPassword(user, model.PasswordEditViewModel.NewPassword);
                var resultHash = await _userManager.UpdateAsync(user);

                if (result.Succeeded && resultHash.Succeeded)
                {
                    _logger.LogInformation($"Password for user {user.UserName} changed");
                }
            }
            return(RedirectToAction("Manage", "Account"));
        }
        public async Task <IActionResult> Manage(Models.AccountViewModels.ManageUserViewModel model, string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            if (ModelState.IsValid)
            {
                var userToEdit = await _userManager.GetUserAsync(User);

                userToEdit.Name    = model.FirstName;
                userToEdit.Surname = model.Surname;
                await _userManager.UpdateAsync(userToEdit);

                return(RedirectToAction("Index", "Home"));
            }
            return(View(model));
        }
        public async Task <IActionResult> Manage(string returnUrl = null)
        {
            ViewData["ReturnUrl"] = returnUrl;
            var user = await _userManager.GetUserAsync(User);

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

            var grpList     = new List <Models.AccountViewModels.GroupViewModel>();
            var groupIDList = new List <int>();

            foreach (var item in _context.UserRoles.Where(x => x.UserId == user.Id))
            {
                groupIDList.Add(item.RoleId);
            }


            foreach (var item in groupIDList)
            {
                var element = await _roleManager.FindByIdAsync(item.ToString());

                grpList.Add(new Models.AccountViewModels.GroupViewModel
                {
                    GroupName = element.Name,
                    GroupID   = element.Id
                });
            }
            var model = new Models.AccountViewModels.ManageUserViewModel
            {
                Username              = user.UserName,
                Id                    = user.Id,
                FirstName             = user.Name,
                Surname               = user.Surname,
                GroupList             = grpList,
                PasswordEditViewModel = new Models.AccountViewModels.PasswordEditViewModel()
            };

            return(View(model));
        }