diff --git a/Sheaft.Identity/Controllers/AccountController.cs b/Sheaft.Identity/Controllers/AccountController.cs index cde52fb..15bffd1 100644 --- a/Sheaft.Identity/Controllers/AccountController.cs +++ b/Sheaft.Identity/Controllers/AccountController.cs @@ -26,6 +26,7 @@ using System.Security.Claims; using System.Threading; using System.Threading.Tasks; +using System.Web; namespace Sheaft.Identity.Controllers { @@ -268,7 +269,7 @@ public async Task ForgotPassword(ForgotPasswordViewModel model, C } var user = await _userManager.FindByEmailAsync(model.UserName); - if (user == null || !user.EmailConfirmed) + if (user == null) { ModelState.AddModelError("", "Utilisateur introuvable"); return View(model); @@ -308,17 +309,18 @@ public async Task ForgotPassword(ForgotPasswordViewModel model, C public async Task ConfirmEmail(string userId, string token, string returnUrl = null) { if (userId == null || token == null) - { - return View("Error"); - } + return RedirectToAction("Error", "Home", new { errorMessage = HttpUtility.UrlEncode("Le lien de confirmation est invalide.") }); var user = await _userManager.FindByIdAsync(userId); if (user == null) - throw new Exception("Utilisateur introuvable, le lien que vous avez utilisé est peut-être invalide, réessayer de relancer la procédure de vérification d'email ou contactez notre support."); + return RedirectToAction("Error", "Home", new { errorMessage = HttpUtility.UrlEncode("Utilisateur introuvable, le lien que vous avez utilisé est peut-être invalide.") }); + + if (user.EmailConfirmed) + return View(); var result = await _userManager.ConfirmEmailAsync(user, token); if (!result.Succeeded) - throw new Exception("Le code de vérification est invalide ou expiré, réessayer de relancer la procédure de vérification d'email ou contactez notre support."); + return RedirectToAction("Error", "Home", new { errorMessage = HttpUtility.UrlEncode("Le code de vérification est invalide ou expiré.") }); return View(); } @@ -328,13 +330,11 @@ public async Task ConfirmEmail(string userId, string token, strin public async Task ResetPassword(string userId, string token, string returnUrl = null) { if (userId == null || token == null) - { - return View("Error"); - } + return RedirectToAction("Error", "Home", new { errorMessage = HttpUtility.UrlEncode("Le lien de réinitialisation de mot de passe est invalide.") }); var user = await _userManager.FindByIdAsync(userId); if (user == null) - throw new Exception("Utilisateur introuvable, le lien que vous avez utilisé est peut-être invalide, réessayer de relancer la procédure de récupération de mot de passe ou contactez notre support."); + return RedirectToAction("Error", "Home", new { errorMessage = HttpUtility.UrlEncode("Utilisateur introuvable, le lien que vous avez utilisé est peut-être invalide.") }); var vm = new ResetPasswordViewModel { diff --git a/Sheaft.Identity/Controllers/HomeController.cs b/Sheaft.Identity/Controllers/HomeController.cs index 6ff1d0e..c5c85c2 100644 --- a/Sheaft.Identity/Controllers/HomeController.cs +++ b/Sheaft.Identity/Controllers/HomeController.cs @@ -7,6 +7,7 @@ using Sheaft.Identity.Security; using Sheaft.Identity.ViewModels; using System.Threading.Tasks; +using System.Web; namespace Sheaft.Identity.Controllers { @@ -39,10 +40,9 @@ public IActionResult Index() /// /// Shows the error page /// - public async Task Error(string errorId) + public async Task Error(string errorId, string errorMessage = null) { var vm = new ErrorViewModel(); - // retrieve error details from identityserver var message = await _interaction.GetErrorContextAsync(errorId); if (message != null) @@ -55,7 +55,12 @@ public async Task Error(string errorId) message.ErrorDescription = null; } } + else + { + vm.Error = new IdentityServer4.Models.ErrorMessage { Error = HttpUtility.UrlDecode(errorMessage), RequestId = HttpContext.TraceIdentifier }; + } + _logger.LogError(vm.Error.Error); return View("Error", vm); } } diff --git a/Sheaft.Identity/Views/Shared/Error.cshtml b/Sheaft.Identity/Views/Shared/Error.cshtml index 4c746e7..292bfc9 100644 --- a/Sheaft.Identity/Views/Shared/Error.cshtml +++ b/Sheaft.Identity/Views/Shared/Error.cshtml @@ -7,34 +7,31 @@ }
-
-

Error

-
+
+
-
-
+
+
- Sorry, there was an error + Nous sommes désolé, une erreur est survenue. Réessayez et si le problème persiste, contactez le support par email: support@sheaft.com @if (error != null) { - - - : @error - - - - if (errorDescription != null) - { -
@errorDescription
- } - } +
+
+ + + @error + + if (errorDescription != null) + { +
@errorDescription
} + }
@if (request_id != null) { -
Request Id: @request_id
- } +
Identifiant de requête : @request_id
}
diff --git a/Sheaft.Identity/wwwroot/css/login.css b/Sheaft.Identity/wwwroot/css/login.css index 45f0e42..7da98a2 100644 --- a/Sheaft.Identity/wwwroot/css/login.css +++ b/Sheaft.Identity/wwwroot/css/login.css @@ -1,5 +1,3 @@ - - @media (min-width: 769px) { .login-container, .right-panel { display: flex; diff --git a/Sheaft.Identity/wwwroot/css/site.css b/Sheaft.Identity/wwwroot/css/site.css index 7638890..fb18626 100644 --- a/Sheaft.Identity/wwwroot/css/site.css +++ b/Sheaft.Identity/wwwroot/css/site.css @@ -1,4 +1,9 @@ -body { +.error-page .content { + margin: auto !important; + padding:0; +} + +body { height: 100vh; background-color: #fbfbfb; font-family: "Roboto", sans-serif;