package org.brixcms.plugin.content.auth;
import org.brixcms.auth.Action;
import org.brixcms.auth.Action.Context;
import org.brixcms.auth.AuthorizationStrategy;
import org.brixcms.plugin.content.auth.PostNodeAction.Type;
import org.brixcms.plugin.hierarchical.auth.AccessHierarchicalNodePluginAction;
import org.brixcms.plugin.site.SitePlugin;
import org.brixcms.plugin.site.auth.AccessSitePluginAction;
public class ContentPluginAuthorizationStrategy implements AuthorizationStrategy {
@Override
public boolean isActionAuthorized(Action action) {
if (action instanceof AccessSitePluginAction) {
// hide site tab when different than site workspace is selected
if (!SitePlugin.get().isSiteWorkspace(((AccessSitePluginAction) action).getWorkspace())) {
return false;
}
}
if (action instanceof AccessHierarchicalNodePluginAction) {
AccessHierarchicalNodePluginAction pluginAction = (AccessHierarchicalNodePluginAction) action;
// hide content tab when different than content ws is selected
if (!pluginAction.getPluginLocator().getPlugin().isPluginWorkspace(pluginAction.getWorkspace())) {
return false;
}
}
if (action instanceof PostNodeAction) {
PostNodeAction postNodeAction = (PostNodeAction) action;
if (postNodeAction.getType() == Type.VIEW && postNodeAction.getContext() == Context.PRESENTATION) {
// TODO isPublic, isPublished?
}
}
return true;
}
}