예제 #1
0
        //-------------------------------------------------------------------------------------------------

        public Result ForgetPassword(ForgetPasswordDto user)
        {
            Result res = new Result();

            using (_db = new IdeaManagmentDatabaseEntities())
            {
                var findUser = _db.USERS.FirstOrDefault(x =>
                                                        x.EMAIL == user.Email.Trim() &&
                                                        x.FIRST_NAME == user.FirstName.Trim() &&
                                                        x.LAST_NAME == user.LastName.Trim() &&
                                                        x.USERNAME == user.Username.Trim());
                if (findUser != null)
                {
                    res.Value   = true;
                    res.Content = "" + findUser.PASSWORD;
                }
                else
                {
                    res.Value   = false;
                    res.Content = "عدم وجود یا عدم  مطابقت اطلاعات";
                }
            }

            return(res);
        }
예제 #2
0
        public async Task <ResponseDto> ResetPassword(ForgetPasswordDto model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            if (user == null)
            {
                response.Message   = MessageConstant.User.UserNotFound;
                response.IsSuccess = false;
                return(response);
            }

            var decodedToken = WebEncoders.Base64UrlDecode(model.Token);

            model.Token = Encoding.UTF8.GetString(decodedToken);

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

            if (result.Succeeded)
            {
                response.Message = MessageConstant.User.PasswordChanged;
                return(response);
            }
            response.Message   = MessageConstant.User.PasswordChangedFailed;
            response.IsSuccess = false;
            return(response);
        }
예제 #3
0
 public async Task <IActionResult> ForgetPassword([FromBody] ForgetPasswordDto forgetPasswordDto)
 {
     return(await Do(() =>
     {
         //await _userService.ForgetPassword(forgetPasswordDto.Email);
         throw new ArgumentException("This feature is currently unsupported due to insecure domain");
     }));
 }
예제 #4
0
        public IActionResult SendLink(ForgetPasswordDto forgetPasswordDto)
        {
            var id        = _roleService.GetUserIdByEmail(forgetPasswordDto.Email);
            var url       = Request.Host.Value;
            var sendEmail = new EmailOptions();

            sendEmail.SendPasswordResetEmail(forgetPasswordDto.Email, "Reset Your Password", id, url);
            return(RedirectToAction("Sign", "Home"));
        }
예제 #5
0
        public async Task <IActionResult> ForgetPassword([FromBody] ForgetPasswordDto dto)
        {
            ForgetPasswordDtoValidator validator = new ForgetPasswordDtoValidator();
            ValidationResult           result    = await validator.ValidateAsync(dto);

            if (result.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(dto.Email);

                if (user == null)
                {
                    result.Errors.Add(new ValidationFailure("email", "此電子郵件尚未被註冊"));
                    return(BadRequest(result.Errors));
                }

                #region UpdateSecurity

                await using (var transaction = await _dbContext.Database.BeginTransactionAsync())
                {
                    try
                    {
                        var oldSecurityStamp = user.SecurityStamp;
                        if (await _userManager.UpdateSecurityStampAsync(user) != IdentityResult.Success)
                        {
                            throw new DbUpdateException();
                        }
                        if (await _userManager.ReplaceClaimAsync(user, new Claim(ClaimTypes.Sid, oldSecurityStamp), new Claim(ClaimTypes.Sid, user.SecurityStamp)) != IdentityResult.Success)
                        {
                            throw new DbUpdateException();
                        }

                        await transaction.CommitAsync();
                    }
                    catch (DbUpdateException)
                    {
                        await transaction.RollbackAsync();

                        throw;
                    }
                }

                #endregion

                #region 寄信

                var link = $"{_configuration["FrontendUrl"]}/account/password/reset" +
                           $"?userId={Uri.EscapeDataString(user.Id)}" +
                           $"&token={Uri.EscapeDataString(await _userManager.GeneratePasswordResetTokenAsync(user))}";

                await _mailService.SendResetPasswordAsync(user.Email, user.Email, link);

                #endregion

                return(NoContent());
            }
            return(BadRequest(result.Errors));
        }
예제 #6
0
        public async Task <Message> ForgetPassword(ForgetPasswordDto input)
        {
            string returnUrl = null;

            returnUrl = returnUrl ?? Url.Content("~/");
            bool   isSuccess = false;
            string message   = string.Empty;

            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByEmailAsync(input.Email);

                if (user != null && (await _userManager.IsEmailConfirmedAsync(user)))
                {
                    // Don't reveal that the user does not exist or is not confirmed
                    var code = await _userManager.GeneratePasswordResetTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    if (!string.IsNullOrEmpty(code))
                    {
                        string physicalUrl = _config.GetValue <string>("CommonProperty:ClientPhysicalUrl");
                        string emailBody   = SocialEcommerce.Shared.Utilities.Utility.ReadEmailTemplate(_webHostEnvironment.WebRootPath, EmailConstant.TemplateName.ForgotPassword, physicalUrl);

                        var logoUrl = _config.GetValue <string>("App:ServerRootAddress") + SocialEcommerce.Shared.Constants.MailLogoURL.LogoURL; //Arti

                        var callbackUrl = physicalUrl + "/#/auth/reset-password/" + code;
                        //var callbackUrl = "http://*****:*****@"Forget password recovery mail from Divide & conquer Social Ecommerce", emailBody, user.Email);
                        isSuccess = true;
                    }
                    else
                    {
                        isSuccess = false;
                        message   = message + "Invalid User ";
                    }
                }
                else
                {
                    isSuccess = false;
                    message   = message + "User not Found ";
                }
            }

            return(new Message()
            {
                isSuccess = isSuccess,
                message = message,
            });
        }
        public HttpResponseMessage ForgetPassword([FromBody] ForgetPasswordDto user)
        {
            Result res = _business.ForgetPassword(user);

            if (res.Value)
            {
                return(Request.CreateResponse(HttpStatusCode.OK,
                                              res.Content));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.PreconditionFailed,
                                              res.Content));
            }
        }
예제 #8
0
        public async Task <IActionResult> ForgetPassword(ForgetPasswordDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var newPassword = await _service.NewPassword(model);

            if (newPassword == "")
            {
                return(BadRequest("資枓比對不一致,請重新輸入"));
            }

            return(Ok(newPassword));
        }
        public async Task <IActionResult> ResetPasswordAsync([FromBody] ForgetPasswordDto model)
        {
            if (!ModelState.IsValid)
            {
                SetErrorMessage();
                return(BadRequest(response));
            }

            var result = await _userService.ResetPassword(model);

            if (result.IsSuccess)
            {
                return(Ok(result));
            }

            return(BadRequest(result));
        }
예제 #10
0
        public async Task <IActionResult> ForgetPassword(ForgetPasswordDto model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }
            var user = await _userManager.FindByEmailAsync(model.EmailAddress);

            if (user == null)
            {
                TempData["clientMessage"] =
                    Helper.PrepareClientMessage("Invalid email address.", DataEnum.ClientMessageType.Error);
                return(View(model));
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(user);

            var message = "Dear: " + model.EmailAddress;

            message += "<br/>Please follow the link below to reset your password<br>";
            message += _configuration["WebsiteUrl"] + "/home/resetpassword?token=" + token + "&email=" + model.EmailAddress;

            var messageParams = new SendMailParamsDto
            {
                ToList = new List <string> {
                    model.EmailAddress
                },
                IsHtml       = true,
                MessageBody  = message,
                MessageTitle = _configuration["WebsiteName"] + ": Reset password"
            };
            var result = await _emailServices.SendMailAsync(messageParams);

            if (result)
            {
                TempData["clientMessage"] =
                    Helper.PrepareClientMessage("Reset password link sent to your email address.",
                                                DataEnum.ClientMessageType.Success);
                return(View());
            }

            TempData["clientMessage"] = Helper.PrepareClientMessage("An error occured while sending the email.",
                                                                    DataEnum.ClientMessageType.Error);

            return(View());
        }
예제 #11
0
        public async Task <IActionResult> ForgetPassword([FromBody] ForgetPasswordDto modelDto)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState.Values.SelectMany(v => v.Errors).Select(modelError => modelError.ErrorMessage).ToList()));
                }

                await _authService.SendEmailForgetPassword(modelDto, Url);

                return(Ok(new { message = "Por favior siga as instruções enviadas para o seu email.\n Obrigado!" }));
            }
            catch (AppException ex)
            {
                return(BadRequest(new { message = ex.Message }));
            }
        }
예제 #12
0
        public async Task <ActionResult> ForgetPassword(ForgetPasswordDto model)
        {
            var user = await userManager.FindByEmailAsync(model.Email);

            if (user != null)
            {
                var    token   = userManager.GeneratePasswordResetTokenAsync(user);
                Random random  = new Random();
                int    code    = random.Next(1000, 2000);
                var    message = new Message(new string[] { model.Email },
                                             "Reset Password",
                                             $" Dear {user.UserName} welcome \n This is your code to add new password : "******"{code}");
                emailSender.SendEmail(message);
                return(Ok(new { email = model.Email, token = token.Result, code = code }));
            }
            return(BadRequest("Something is wrong..Try again"));
        }
예제 #13
0
        public async Task <IActionResult> ForgetPassword(ForgetPasswordDto model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState.ValidationState));
            }

            var member = await _service.GetMember(model.Email, model.Phone);

            if (member.Email != model.Email || member.Phone != model.Phone || member.BirthYear != model.BirthYear)
            {
                return(BadRequest("資枓比對不一致,請重新輸入"));
            }

            var newPassword = await _service.NewPassword(member);

            return(Ok(newPassword));
        }
예제 #14
0
        public BaseApiResult Execute(ForgetPasswordDto dto)
        {
            BaseApiResult result = new BaseApiResult {
                Message = Messages.UserNotExist
            };
            User user = unit.User.GetByEmail(dto.Email);

            if (user != null)
            {
                var password = Agent.GenerateRandomNo(8);
                user.SetPassword(password, encrypter);
                unit.Complete();
                Task myTask = Task.Run(() => notification.SendAsync(password, dto.Email));
                myTask.Wait();
                result.Message = Messages.PasswordSentBySms;
                result.Status  = true;
            }

            return(result);
        }
예제 #15
0
        public async Task SendEmailForgetPassword(ForgetPasswordDto forgetPasswordDto, IUrlHelper url)
        {
            if (forgetPasswordDto.Email == null)
            {
                throw new AppException("O Email é de preenchimento obrigatorio!");
            }

            var userEntity = await _userManager.FindByEmailAsync(forgetPasswordDto.Email);

            if (userEntity == null)
            {
                throw new AppException("Email [ " + forgetPasswordDto.Email + " ] dont exist!");
            }

            var token = await _userManager.GeneratePasswordResetTokenAsync(userEntity);

            if (token == null)
            {
                throw new AppException("Erro ao gerar password reset token!");
            }

            var forgetPasswordLink = url.Action("NewPasswordFromForgetPassword", "Auth",
                                                new { token = token, id = userEntity.Id }, protocol: _httpContext.HttpContext.Request.Scheme);

            if (forgetPasswordLink == null)
            {
                throw new AppException("Erro ao gerar link para confirmacao de email!");
            }

            Helpers.SendGrid sendEmail = new Helpers.SendGrid(_configuration);
            var resulsendEmail         = await sendEmail.PostMessageForgetPassword(userEntity.Email, forgetPasswordLink);

            if (resulsendEmail.StatusCode != System.Net.HttpStatusCode.Accepted)
            {
                throw new AppException("Foi impossivel enviar o email para o reset a password! Por favor contactar um administrador");
            }
        }
예제 #16
0
        public IActionResult ForgetPassword()
        {
            var model = new ForgetPasswordDto();

            return(View("ForgetPassword", model));
        }
예제 #17
0
 public async Task <ActionResult <BaseApiResult> > ForgetPassword([FromBody] ForgetPasswordDto dto)
 {
     return(forgetPassword.Execute(dto));
 }
예제 #18
0
        //-------------------------------------------------------------------------------------------------

        public Result ForgetPassword(ForgetPasswordDto user)
        {
            return(_repository.ForgetPassword(user));
        }