public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            IUserCacheService userCacheService = filterContext.HttpContext.RequestServices.GetService <IUserCacheService>();
            var userId = filterContext.HttpContext.User.Identity.Name;

            if (userId == null)
            {
                filterContext.Result = new UnauthorizedResult();
            }
            else
            {
                var userPair = userCacheService.GetUsersRolePair(userId);

                foreach (var userFeatureAccess in _filters)
                {
                    if (userPair.HasAccessToFeature(userFeatureAccess))
                    {
                        base.OnActionExecuting(filterContext);
                        return;
                    }
                }

                filterContext.Result = new UnauthorizedResult();
            }
        }