/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.content.category; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.userstore.MemberOfResolver; class CreateCategoryAccessChecker { private MemberOfResolver memberOfResolver; private CategoryAccessResolver categoryAccessResolver; private UserEntity creator; CreateCategoryAccessChecker( MemberOfResolver memberOfResolver, CategoryAccessResolver categoryAccessResolver ) { this.memberOfResolver = memberOfResolver; this.categoryAccessResolver = categoryAccessResolver; } CreateCategoryAccessChecker creator( UserEntity creator ) { this.creator = creator; return this; } void checkAccessToCreateContentArchive() throws CreateCategoryAccessException { // needs at least administrator rights if ( !memberOfResolver.hasAdministratorPowers( creator ) ) { throw new CreateCategoryAccessException( "To create a content archive the user needs to be an administrator", creator.getQualifiedName() ); } } void checkAccessToCreateCategory( CategoryEntity parentCategory ) throws CreateCategoryAccessException { final boolean noAdministrateAccessByRights = !categoryAccessResolver.hasAccess( creator, parentCategory, CategoryAccessType.ADMINISTRATE ); if ( noAdministrateAccessByRights ) { if ( !memberOfResolver.hasAdministratorPowers( creator ) ) { throw new CreateCategoryAccessException( "To create a category the user needs to have the administrate access on the parent category or be an administrator", creator.getQualifiedName() ); } } } }