public async Task <IActionResult> UpdatePassword(UpdatePasswordViewModel model)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            if (ModelState.IsValid)
            {
                var verifyHashed = _passwordHasher.VerifyHashedPassword(user, user.PasswordHash, model.OldPassword);
                if (verifyHashed == PasswordVerificationResult.Success)
                {
                    user.PasswordHash = _passwordHasher.HashPassword(user, model.NewPassword);
                    var result = await _userManager.UpdateAsync(user);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignOutAsync();

                        await _signInManager.SignInAsync(user, true);

                        return(RedirectToAction("Index"));
                    }
                    ModelState.AddIdentityError(result.Errors);

                    return(View(model));
                }
                ModelState.AddModelError(nameof(model.OldPassword), Messages.OldPasswordFail);
                return(View(model));
            }
            return(View(model));
        }
        public async Task <IActionResult> LoginEmail([FromBody] LoginDto login)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }


            var user = await GetUserIdentity(login);

            if (user == null)
            {
                ModelState.AddIdentityError("BadLogin", "Invalid email or password.");
                return(BadRequest(ModelState));
            }

//			var claims = await _userManager.GetClaimsAsync(user);

            var token = _jwtTokenFactory.GenerateToken(user);

            var returnData = new
            {
                token,
//				user
            };

            return(Ok(returnData));
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user           = _mapper.Map <VesizleUser>(model);
                var identityResult = await _passwordValidator.ValidateAsync(_userManager, user, model.Password);

                if (identityResult.Succeeded)
                {
                    var validateResult = await _userValidator.ValidateAsync(_userManager, user);

                    if (validateResult.Succeeded)
                    {
                        user.PasswordHash = _passwordHasher.HashPassword(user, model.Password);
                        var createResult = await _userManager.CreateAsync(user);

                        var roleAddResult = await _userManager.AddToRoleAsync(user, UserRoleNames.Standard);

                        if (createResult.Succeeded && roleAddResult.Succeeded)
                        {
                            return(RedirectToAction("Index", "Home"));
                        }
                        ModelState.AddIdentityError(createResult.Errors);
                        ModelState.AddIdentityError(roleAddResult.Errors);
                        return(View(model));
                    }
                    ModelState.AddIdentityError(validateResult.Errors);
                    return(View(model));
                }
                ModelState.AddIdentityError(nameof(model.Password), identityResult.Errors);
                return(View(model));
            }

            return(View(model));
        }
        public async Task <IActionResult> ResetPassword(ResetPasswordViewModel model, string userId, string token)
        {
            if (ModelState.IsValid)
            {
                VesizleUser user = await _userManager.FindByIdAsync(userId);

                var            codeDecodedBytes = WebEncoders.Base64UrlDecode(token);
                var            codeDecoded      = Encoding.UTF8.GetString(codeDecodedBytes);
                IdentityResult result           = await _userManager.ResetPasswordAsync(user, codeDecoded, model.Password);

                if (result.Succeeded)
                {
                    var result2 = await _userManager.UpdateSecurityStampAsync(user);

                    if (result2.Succeeded)
                    {
                        return(RedirectToAction("Login"));
                    }
                    ModelState.AddIdentityError(result2.Errors);
                    return(View(model));
                }
                ModelState.AddIdentityError(nameof(model.RePassword), result.Errors);
                return(View(model));
            }
            return(View(model));
        }
Exemplo n.º 5
0
        public async Task <IActionResult> Delete(RoleDeleteViewModel model)
        {
            if (ModelState.IsValid)
            {
                var role = await _roleManager.FindByIdAsync(model.Id);

                if (role != null)
                {
                    var result = await _roleManager.DeleteAsync(role);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction("Index"));
                    }
                    ModelState.AddIdentityError("Id", result.Errors);
                }
                return(NotFound());
            }
            return(View(model));
        }
Exemplo n.º 6
0
        public async Task <IActionResult> Edit(RoleEditViewModel model)
        {
            if (ModelState.IsValid)
            {
                var role = await _roleManager.FindByIdAsync(model.Id);

                if (role != null)
                {
                    role.Name = model.Name;
                    var result = await _roleManager.UpdateAsync(role);

                    if (result.Succeeded)
                    {
                        return(RedirectToAction("Index"));
                    }
                    ModelState.AddIdentityError(nameof(model.Name), result.Errors);
                }
                return(NotFound());
            }
            return(View(model));
        }
        public async Task <IActionResult> Edit(UserUpdateViewModel model)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            if (ModelState.IsValid)
            {
                user.FirstName = model.FirstName;
                user.LastName  = model.LastName;
                user.Email     = model.Email;
                var result = await _userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    await _signInManager.SignOutAsync();

                    await _signInManager.SignInAsync(user, true);

                    return(RedirectToAction("Index"));
                }
                ModelState.AddIdentityError(result.Errors);
                return(View(model));
            }
            return(View());
        }