diff --git a/Controllers/AccountController.cs b/Controllers/AccountController.cs index 6ab1dd2..0bafcfa 100644 --- a/Controllers/AccountController.cs +++ b/Controllers/AccountController.cs @@ -65,6 +65,7 @@ public async Task Login(LoginViewModel model, string returnUrl = if (result.Succeeded) { _logger.LogInformation("User logged in."); + this.FlashSuccess("Logged in"); return RedirectToLocal(returnUrl); } if (result.RequiresTwoFactor) @@ -247,6 +248,7 @@ public async Task Logout() { await _signInManager.SignOutAsync(); _logger.LogInformation("User logged out."); + this.FlashSuccess("Logged out"); return RedirectToAction(nameof(HomeController.Index), "Home"); } diff --git a/Extensions/ControllerExtensions.cs b/Extensions/ControllerExtensions.cs new file mode 100644 index 0000000..f0e26a8 --- /dev/null +++ b/Extensions/ControllerExtensions.cs @@ -0,0 +1,38 @@ +namespace Microsoft.AspNetCore.Mvc +{ + public static class FlashMessages + { + public static string Info = "InfoMessage"; + public static string Success = "SuccessMessage"; + public static string Error = "ErrorMessage"; + public static string Warning = "WarningMessage"; + } + + //TODO: allow mulitple flashes of same type??? + public static class ControllerExtensions + { + static void FlashMessage(this Controller controller, string type, string message) + { + controller.TempData[type] = message; + } + public static void FlashInfo(this Controller controller, string message) + { + FlashMessage(controller, FlashMessages.Info, message); + } + + public static void FlashSuccess(this Controller controller, string message) + { + FlashMessage(controller, FlashMessages.Success, message); + } + + public static void FlashError(this Controller controller, string message) + { + FlashMessage(controller, FlashMessages.Error, message); + } + + public static void FlashWarning(this Controller controller, string message) + { + FlashMessage(controller, FlashMessages.Warning, message); + } + } + } diff --git a/Views/Shared/_FlashMessages.cshtml b/Views/Shared/_FlashMessages.cshtml new file mode 100644 index 0000000..4e39930 --- /dev/null +++ b/Views/Shared/_FlashMessages.cshtml @@ -0,0 +1,21 @@ +@using Microsoft.AspNetCore.Mvc.RazorPages + +@if (TempData.ContainsKey(FlashMessages.Error)) +{ +
@TempData[FlashMessages.Error]
+} + +@if (TempData.ContainsKey(FlashMessages.Info)) +{ +
@TempData[FlashMessages.Info]
+} + +@if (TempData.ContainsKey(FlashMessages.Warning)) +{ +
@TempData[FlashMessages.Warning]
+} + +@if (TempData.ContainsKey(FlashMessages.Success)) +{ + +} diff --git a/Views/Shared/_Layout.cshtml b/Views/Shared/_Layout.cshtml index 9da5c66..754e592 100644 --- a/Views/Shared/_Layout.cshtml +++ b/Views/Shared/_Layout.cshtml @@ -38,6 +38,9 @@ + + @await Html.PartialAsync("_FlashMessages") +
@RenderBody()