/// <summary>
        /// Determines if the given user principal is authorized based on the require user role or not.
        /// </summary>
        /// <param name="principal">The logged in user.</param>
        /// <param name="requiredUserRole">The required user role.</param>
        /// <returns>True if authorized, false otherwise.</returns>
        public bool IsAuthorized(CustomerPortalPrincipal principal, UserRole requiredUserRole)
        {
            principal.AssertNotNull(nameof(principal));

            bool isAuthorized = false;

            switch (requiredUserRole)
            {
            case UserRole.Customer:
                isAuthorized = principal.IsPartnerCenterCustomer && !principal.IsPortalAdmin;
                break;

            case UserRole.Partner:
                isAuthorized = !principal.IsPartnerCenterCustomer && principal.IsPortalAdmin;
                break;

            case UserRole.Any:
                isAuthorized = principal.IsPartnerCenterCustomer || principal.IsPortalAdmin;
                break;

            case UserRole.None:
                isAuthorized = !principal.IsPartnerCenterCustomer && !principal.IsPortalAdmin;
                break;
            }

            return(isAuthorized);
        }
        public async Task <ActionResult> Home()
        {
            BrandingConfiguration portalBranding = await ApplicationDomain.Instance.PortalBranding.RetrieveAsync().ConfigureAwait(false);

            if (portalBranding.HeaderImage != null)
            {
                ViewBag.HeaderImage = portalBranding.HeaderImage.ToString();
            }

            if (portalBranding.PrivacyAgreement != null)
            {
                ViewBag.PrivacyAgreement = portalBranding.PrivacyAgreement.ToString();
            }

            CustomerPortalPrincipal principal = HttpContext.User as CustomerPortalPrincipal;

            ViewBag.OrganizationName = portalBranding.OrganizationName;
            ViewBag.IsPortalAdmin    = principal.IsPortalAdmin;

            return(PartialView());
        }
示例#3
0
        /// <summary>
        /// Serves the single page application to the browser.
        /// </summary>
        /// <param name="form">form data</param>
        /// <returns>The SPA markup.</returns>
        public async Task <ActionResult> Index(FormCollection form)
        {
            try
            {
                // get a copy of the plugins and the client configuration
                PluginsSegment clientVisiblePlugins = ApplicationConfiguration.WebPortalConfigurationManager.GeneratePlugins();
                IDictionary <string, dynamic> clientConfiguration = new Dictionary <string, dynamic>(ApplicationConfiguration.ClientConfiguration);

                // configure the tiles to show and hide based on the logged in user role
                CustomerPortalPrincipal principal = HttpContext.User as CustomerPortalPrincipal;

                clientVisiblePlugins.Plugins.First(x => x.Name == "CustomerAccount").Hidden         = !principal.IsPartnerCenterCustomer;
                clientVisiblePlugins.Plugins.First(x => x.Name == "CustomerSubscriptions").Hidden   = !principal.IsPartnerCenterCustomer;
                clientVisiblePlugins.Plugins.First(x => x.Name == "AdminConsole").Hidden            = !principal.IsPortalAdmin;
                clientVisiblePlugins.Plugins.First(x => x.Name == "PartnerOffersSetup").Hidden      = !principal.IsPortalAdmin;
                clientVisiblePlugins.Plugins.First(x => x.Name == "BrandingSetup").Hidden           = !principal.IsPortalAdmin;
                clientVisiblePlugins.Plugins.First(x => x.Name == "PaymentSetup").Hidden            = !principal.IsPortalAdmin;
                clientVisiblePlugins.Plugins.First(x => x.Name == "CustomerManagementSetup").Hidden = !principal.IsPortalAdmin;

                if (principal.IsPortalAdmin)
                {
                    clientVisiblePlugins.DefaultPlugin = "AdminConsole";
                }
                else
                {
                    clientVisiblePlugins.DefaultPlugin = "Home";
                }

                clientConfiguration["DefaultTile"] = clientVisiblePlugins.DefaultPlugin;
                clientConfiguration["Tiles"]       = clientVisiblePlugins.Plugins;

                ViewBag.Templates        = ApplicationConfiguration.WebPortalConfigurationManager.AggregateStartupAssets().Templates;
                ViewBag.OrganizationName = (await ApplicationDomain.Instance.PortalBranding.RetrieveAsync().ConfigureAwait(false)).OrganizationName;
                ViewBag.IsAuthenticated  = Request.IsAuthenticated ? "true" : "false";

                if (Request.IsAuthenticated)
                {
                    ViewBag.UserName = ((ClaimsIdentity)HttpContext.User.Identity).FindFirst("name").Value ?? "Unknown";
                    ViewBag.Email    = ((ClaimsIdentity)HttpContext.User.Identity).FindFirst(ClaimTypes.Name)?.Value ??
                                       ((ClaimsIdentity)HttpContext.User.Identity).FindFirst(ClaimTypes.Email)?.Value;
                }

                ViewBag.Configuratrion = JsonConvert.SerializeObject(
                    clientConfiguration,
                    new JsonSerializerSettings()
                {
                    StringEscapeHandling = StringEscapeHandling.Default
                });

                if (!Resources.Culture.TwoLetterISOLanguageName.Equals("en", StringComparison.InvariantCultureIgnoreCase))
                {
                    ViewBag.ValidatorMessagesSrc = string.Format(CultureInfo.InvariantCulture, "https://ajax.aspnetcdn.com/ajax/jquery.validate/1.15.0/localization/messages_{0}.js", Resources.Culture.TwoLetterISOLanguageName);
                }

                if (form.Count > 0)
                {
                    ViewBag.paymentId = form["txnid"];
                    ViewBag.txnId     = form["payuMoneyId"];
                }

                return(View());
            }
            catch (Exception exception)
            {
                ViewBag.ErrorMessage = Resources.PortalStartupFailure;
                ViewBag.ErrorDetails = exception.Message;
                return(View("Error"));
            }
        }