Esempio n. 1
0
        public async Task <ActionResult> PasswordRecover(AccountPasswordRecoverViewModel model)
        {
            if (ModelState.IsValid)
            {
                //
                var adminUser = await _adminUserManager.FindByEmailAsync(model.Email);

                //
                if (adminUser != null && adminUser.Realms.Contains(Realm.AdminWebsite))
                {
                    //
                    var mailModel = new AccountPasswordRecoverMessageViewModel()
                    {
                        Name      = adminUser.FullName ?? adminUser.UserName,
                        PageTitle = GetLocalizedString("Auth_RecoverPasswordTitle"),
                        ResetLink = Url.Action(nameof(PasswordSetNew), "Account", new
                        {
                            resetToken = await _adminUserManager.GeneratePasswordResetTokenAsync(adminUser.Id),
                            area       = AppAreas.GetAreaName(Area.Users)
                        }, protocol: Request.Url.Scheme)
                    };

                    //
                    var subject = $"[{GetLocalizedString("_App_Name")}] {mailModel.PageTitle}";
                    var message = RenderViewToString("PasswordRecoverMessage", model: mailModel);

                    //
                    _emailDispatcherService.Dispatch(message, subject, new MailAddress(adminUser.Email, adminUser.FullName));
                }

                return(RedirectToAction(nameof(PasswordRecover), new { status = AccountActionStatus.PasswordRecoverMessageSent.ToLowerCaseString() }));
            }

            return(View(model));
        }