Exemple #1
0
        public bool CanAccess(ContentPermissionsPart part)
        {
            if (part == null || !part.Enabled || !part.Roles.Any())
            {
                return(true);
            }

            if (part.Roles.Contains("Anonymous"))
            {
                return(true);
            }

            if (_httpContextAccessor.HttpContext.User == null)
            {
                return(false);
            }

            if (part.Roles.Contains("Authenticated") && _httpContextAccessor.HttpContext.User.Identity.IsAuthenticated)
            {
                return(true);
            }

            foreach (var role in part.Roles)
            {
                if (_httpContextAccessor.HttpContext.User.IsInRole(role))
                {
                    return(true);
                }
            }

            return(false);
        }
Exemple #2
0
        public ContentPermissionsPartSettings GetSettings(ContentPermissionsPart part)
        {
            var contentTypeDefinition     = _contentDefinitionManager.GetTypeDefinition(part.ContentItem.ContentType);
            var contentTypePartDefinition = contentTypeDefinition.Parts.FirstOrDefault(x => string.Equals(x.PartDefinition.Name, nameof(ContentPermissionsPart)));

            return(contentTypePartDefinition.GetSettings <ContentPermissionsPartSettings>());
        }
Exemple #3
0
 public static bool HasAccess(IUser user, ContentPermissionsPart part)
 {
     if (user == null && part == null)
     {
         return(true);
     }
     if (part == null || !part.Enabled)
     {
         return(true);
     }
     if (part.ViewContent.Contains(AnonymousRole[0]))
     {
         return(true);
     }
     if (user != null)
     {
         var userRoles = user.As <IUserRoles>();
         if (userRoles == null)
         {
             return(part.ViewContent.Contains(AuthenticatedRole[0]));
         }
         var authorizedRoles = part.ViewContent.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
         var rolesToExamine  = userRoles.Roles;
         return(rolesToExamine.Any(x => authorizedRoles.Contains(x, StringComparer.OrdinalIgnoreCase)));
     }
     return(false);
 }