public async Task <IActionResult> Restore(RestoreAccessDto restoreRequest) { var result = await accountService.RestoreAccess(restoreRequest); switch (result) { case RestoreAccessResult.ResendConfirmationCode: case RestoreAccessResult.ResetPassword: return(Ok()); case RestoreAccessResult.NotFound: return(BadRequest <RestoreAccessDto>(r => r.Email, LocalizedResources.EmailNotFoundError)); default: throw new InvalidOperationException(nameof(RestoreAccessResult)); } }
public async Task <RestoreAccessResult> RestoreAccess(RestoreAccessDto restoreRequest) { var(result, user, newPassword) = await accountManager.RestoreAccess(restoreRequest.Email); switch (result) { case RestoreAccessResult.ResendConfirmationCode: await emailManager.EnqueueEmailConfirmation(user, GetEmailConfirmationUrl(user.ConfirmationCode)); break; case RestoreAccessResult.ResetPassword: await emailManager.EnqueuePasswordResetEmail(user, newPassword, Url.Combine(appConfiguration.BaseUrl, appConfiguration.LogInUrl)); break; } return(result); }