/*
* 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 UpdateCategoryAccessChecker
{
private MemberOfResolver memberOfResolver;
private CategoryAccessResolver categoryAccessResolver;
private UserEntity updater;
UpdateCategoryAccessChecker( MemberOfResolver memberOfResolver, CategoryAccessResolver categoryAccessResolver )
{
this.memberOfResolver = memberOfResolver;
this.categoryAccessResolver = categoryAccessResolver;
}
UpdateCategoryAccessChecker updater( UserEntity updater )
{
this.updater = updater;
return this;
}
void checkAccessToUpdateCategory( CategoryEntity category )
throws UpdateCategoryAccessException
{
if ( memberOfResolver.hasAdministratorPowers( updater ) )
{
return;
}
if ( !categoryAccessResolver.hasAccess( updater, category, CategoryAccessType.ADMINISTRATE ) )
{
throw new UpdateCategoryAccessException(
"To update category the user needs to have the administrate access on the category or be an administrator",
updater.getQualifiedName() );
}
}
}