Beispiel #1
0
        private bool CanAccessFeature()
        {
            var features = _featureToggle.GetFeatures();

            if (features?.Data == null)
            {
                return(true);
            }

            var controllerName    = ControllerContext.RouteData.Values["Controller"].ToString();
            var controllerToggles = features.Data.Where(c => c.Controller.Equals(controllerName, StringComparison.CurrentCultureIgnoreCase)).ToArray();

            if (!controllerToggles.Any())
            {
                return(true);
            }

            var actionName   = ControllerContext.RouteData.Values["Action"].ToString();
            var actionToggle = controllerToggles.Where(t => t.Action.Equals(actionName, StringComparison.CurrentCultureIgnoreCase) || t.Action == "*")
                               .OrderByDescending(t => t.Action)                   // Should put action = * last as specific action toggle should win
                               .FirstOrDefault();

            return(actionToggle == null || IsUserInToggleWhiteList(actionToggle));
        }