public async Task <IActionResult> SendDelete(string code)
        {
            // Redirects to index if code is null
            if (code == null)
            {
                return(Redirect("/"));
            }

            // Retrieves user and email and verified the correct user is signed in.
            User user = await _repository.GetUserAsync(User);

            EmailCode emailCode = await _repository.GetEmailCodeAsync(code);

            if (user != emailCode.User)
            {
                return(Forbid());
            }

            // Returns message if code is no longer valid
            MessageViewModel model;

            if (emailCode.ValidUntil < DateTime.Now)
            {
                model = new MessageViewModel()
                {
                    Title          = "Link expired",
                    MessageTitle   = "Account deletion link expired",
                    MessageContent = "To delete your account request another confirmation email"
                };
                return(View("Message", model));
            }

            // Removes account from database and signs out user
            user.Deleted = true;
            await _repository.SaveChangesAsync();

            await HttpContext.SignOutAsync();

            // Returns view
            model = new MessageViewModel()
            {
                Title        = "Account deleted",
                MessageTitle = "Account deleted"
            };
            return(View("Message", model));
        }
Exemple #2
0
        public async Task <IActionResult> ResetPassword(string code, int?error)
        {
            // Retrieves email code and redirects if null
            EmailCode emailCode = await _repository.GetEmailCodeAsync(code);

            if (emailCode == null)
            {
                return(Redirect("/"));
            }

            ResetPasswordViewModel model = new ResetPasswordViewModel()
            {
                Error  = error,
                Code   = code,
                UserID = emailCode.UserID
            };

            return(View(model));
        }