/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content; import com.enonic.cms.core.content.access.ContentAccessEntity; import com.enonic.cms.core.content.category.CategoryAccessEntity; import com.enonic.cms.core.content.category.CategoryEntity; import com.enonic.cms.core.security.group.GroupEntity; import com.enonic.cms.store.dao.GroupDao; public class InheritContentAccessRightsAlgorithm { private GroupDao groupDao; public void inherit( ContentEntity inheritor, CategoryEntity inheritance ) { GroupEntity eaGroup = groupDao.findBuiltInEnterpriseAdministrator(); for ( CategoryAccessEntity categoryAccess : inheritance.getAccessRights().values() ) { if ( categoryAccess.getGroup().equals( eaGroup ) ) { // do not add the explicit ea group continue; } ContentAccessEntity contentAccess = new ContentAccessEntity(); contentAccess.setGroup( categoryAccess.getGroup() ); contentAccess.setReadAccess( inheritReadAccess( categoryAccess ) ); contentAccess.setUpdateAccess( inheritUpdateAccess( categoryAccess ) ); contentAccess.setDeleteAccess( inheritDeleteAccess( categoryAccess ) ); inheritor.addContentAccessRight( contentAccess ); } inheritor.addOwnerAccessRight(); } private boolean inheritReadAccess( CategoryAccessEntity categoryAccess ) { return categoryAccess.givesContentReadAccess(); } private boolean inheritUpdateAccess( CategoryAccessEntity categoryAccess ) { return categoryAccess.givesContentUpdateAccess(); } private boolean inheritDeleteAccess( CategoryAccessEntity categoryAccess ) { return categoryAccess.givesContentDeleteAccess(); } public void setGroupDao( GroupDao value ) { this.groupDao = value; } }