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); }
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>()); }
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); }