public async Task <IActionResult> Cancel(string key) { var result = await userAccountService.HandleVerificationKeyAsync(key, VerificationKeyPurpose.ConfirmAccount); if (result.UserAccount == null || !result.PurposeValid || result.TokenExpired) { // TODO: clear token if account is there ModelState.AddModelError(IdentityBaseConstants.ErrorMessages.TokenIsInvalid); return(View("InvalidToken")); } var returnUrl = result.UserAccount.VerificationStorage; await userAccountService.ClearVerificationAsync(result.UserAccount); if (interaction.IsValidReturnUrl(returnUrl)) { return(Redirect(Url.Action("Index", "Login", new { ReturnUrl = returnUrl }))); } else { return(Redirect(returnUrl)); } }