src/CustomerSite/Controllers/BaseController.cs (75 lines of code) (raw):

using System.Linq; using Marketplace.SaaS.Accelerator.Services.Models; using Marketplace.SaaS.Accelerator.Services.Services; using Marketplace.SaaS.Accelerator.Services.Utilities; using Microsoft.AspNetCore.Authentication; using Microsoft.AspNetCore.Authentication.OpenIdConnect; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; namespace Marketplace.SaaS.Accelerator.CustomerSite.Controllers; /// <summary> /// Sets a BaseController. /// </summary> /// <seealso cref="Microsoft.AspNetCore.Mvc.Controller" /> public class BaseController : Controller { private readonly IAppVersionService _appVersionService; /// <summary> /// Initializes a new instance of the <see cref="BaseController"/> class. /// </summary> public BaseController(IAppVersionService appVersionService) { _appVersionService = appVersionService; this.CheckAuthentication(); } public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); ViewData["AppVersion"] = _appVersionService.Version; } /// <summary> /// Gets Current Logged in User Email Address. /// </summary> /// <value> /// The current user email address. /// </value> public string CurrentUserEmailAddress { get { return HttpContext?.User?.Claims?.FirstOrDefault(s => s.Type == ClaimConstants.CLAIM_EMAILADDRESS)?.Value ?? string.Empty; } } /// <summary> /// Gets Current Logged in User Name. /// </summary> /// <value> /// The name of the current user. /// </value> public string CurrentUserName { get { if (this.HttpContext != null && this.HttpContext.User.Claims.Count() > 0) { var shortNameClaim = this.HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimConstants.CLAIM_SHORT_NAME); if (shortNameClaim != null) { return shortNameClaim.Value; } else { var fullNameClaim = this.HttpContext.User.Claims.FirstOrDefault(c => c.Type == ClaimConstants.CLAIM_NAME); if (fullNameClaim != null) { return fullNameClaim.Value; } } } return string.Empty; } } /// <summary> /// Get Current Logged in User Email Address. /// </summary> /// <returns> Current Logged User Email.</returns> public PartnerDetailViewModel GetCurrentUserDetail() { if (HttpContext?.User?.Identity?.IsAuthenticated == true) { PartnerDetailViewModel partnerDetail = new PartnerDetailViewModel(); partnerDetail.FullName = this.CurrentUserName; partnerDetail.EmailAddress = this.CurrentUserEmailAddress; return partnerDetail; } return new PartnerDetailViewModel(); } /// <summary> /// Checks the authentication. /// </summary> /// <returns> /// Check authentication. /// </returns> public IActionResult CheckAuthentication() { if (this.HttpContext == null || !this.HttpContext.User.Identity.IsAuthenticated) { return this.Challenge(new AuthenticationProperties { RedirectUri = "/" }, OpenIdConnectDefaults.AuthenticationScheme); } else { return this.RedirectToAction("Index", "Home", new { }); } } }