Ejemplo n.º 1
0
        public async Task <ChangePasswordResultView> ChangePasswordByTokenAsync(MemberChangePasswordByTokenView model)
        {
            if (_isDemo)
            {
                throw new CoralTimeForbiddenException($"Password can't be changed on demo site");
            }

            var userForgotPassRequest = Uow.UserForgotPassRequestRepository.GetRequest(model.Token);

            if (userForgotPassRequest == null)
            {
                return(new ChangePasswordResultView {
                    IsChangedPassword = false, Message = (int)Constants.Errors.InvalidToken
                });
            }

            var user = await _userManager.FindByEmailAsync(userForgotPassRequest.Email);

            if (user == null)
            {
                return(new ChangePasswordResultView {
                    IsChangedPassword = false, Message = (int)Constants.Errors.EmailDoesntExist
                });
            }

            var result = await _userManager.ResetPasswordAsync(user, userForgotPassRequest.RefreshToken, model.NewPassword);

            if (result.Succeeded)
            {
                var tokenToDeleteIds = Uow.UserForgotPassRequestRepository.GetQueryWithIncludes()
                                       .Where(x => x.Email == userForgotPassRequest.Email)
                                       .Select(y => y.Id)
                                       .ToList();

                tokenToDeleteIds.ForEach(id => Uow.UserForgotPassRequestRepository.Delete(id));
                Uow.Save();

                return(new ChangePasswordResultView {
                    IsChangedPassword = true, Message = (int)Constants.Errors.None
                });
            }

            var errors = string.Empty;

            foreach (var error in result.Errors)
            {
                errors += $"{error.Description} ";
            }
            var errorResult = (int)((errors.Contains("token")) ? Constants.Errors.InvalidToken : Constants.Errors.ErrorPassword);

            return(new ChangePasswordResultView {
                IsChangedPassword = false, Message = errorResult
            });
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> ChangePasswordByTokenAsync([FromBody] MemberChangePasswordByTokenView model)
        {
            var serverUrl = GetBaseUrl();

            try
            {
                var result = await _service.ChangePasswordByTokenAsync(model);

                return(new JsonResult(result));
            }
            catch (Exception e)
            {
                _logger.LogWarning($"ChangePasswordByTokenAsync method with parameters ({JsonConvert.SerializeObject(model)});\n {e}");
                var errors = ExceptionsChecker.CheckMembersException(e);
                return(BadRequest(errors));
            }
        }
Ejemplo n.º 3
0
        public async Task <IActionResult> ChangePasswordByTokenAsync([FromBody] MemberChangePasswordByTokenView model)
        {
            var result = await _service.ChangePasswordByTokenAsync(model);

            return(new JsonResult(result));
        }