Exemplo n.º 1
0
        public async Task <bool> SendResetPasswordAsync(string email)
        {
            try
            {
                var admin = await _db.SiteAdmins.FirstOrDefaultAsync(a => a.Email.Equals(email));

                admin.ResetPasswordCode = Generator.GenerationUniqueName();

                await UpdateUserAsync(admin);

                var forgetPasswordViewModel = new ForgetPasswordTemplateViewModel()
                {
                    Name = admin.FullName,
                    Url  = string.Concat(_httpContext.HttpContext.Request.Scheme, "://",
                                         _httpContext.HttpContext.Request.Host.ToUriComponent(),
                                         $"/ResetPassword/{admin.ResetPasswordCode}")
                };

                var mail = new Email()
                {
                    To      = email,
                    Subject = "بازیابی کلمه عبور - وبسایت شخصی",
                    Body    = await _viewRenderService.RenderToStringAsync("_ForgetPasswordTemplate", forgetPasswordViewModel)
                };

                return(await SendEmailAsync(mail));;
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> ForgetPassword(ForgetPasswordViewModel forgetPasswordForm)
        {
            if (!ModelState.IsValid)
            {
                return(View(forgetPasswordForm));
            }


            var user = await _userService.GetUserByEmailAsync(OptimizeText.OptimizeEmail(forgetPasswordForm.Email));

            if (user == null)
            {
                TempData["Error"] = "کاربری با ایمیل وارد شده وجود ندارد";
                return(View(forgetPasswordForm));
            }

            if (user.IsActive.Equals(false))
            {
                TempData["Error"] = "حساب کاربری غیر فعال است";
                return(View(forgetPasswordForm));
            }

            var forgetPasswordViewModel = new ForgetPasswordTemplateViewModel()
            {
                Name = user.Name,
                Url  = string.Concat(Request.Scheme, "://", Request.Host.ToUriComponent(),
                                     $"/Account/ResetPassword/{user.ActivationCode}")
            };

            var email = new Email()
            {
                To      = user.Email,
                Subject = "بازیابی کلمه عبور - تاپ لرن",
                Body    = await _viewRenderService.RenderToStringAsync("_ForgetPasswordTemplate", forgetPasswordViewModel)
            };

            var emailSuccessfullySent = await _mailService.SendEmailAsync(email);

            if (!emailSuccessfullySent)
            {
                TempData["Error"] = "مشکلی پیش آمد، لطفا مجددا امتحان کنید";
                return(View(forgetPasswordForm));
            }

            return(View("SuccessForgetPasswordSent", user));
        }