package org.archive.cdxserver.auth; import java.util.List; import org.archive.format.cdx.FieldSplitFormat; /** * Simple checking of permissions for cdx server actions Permissions include: * -Ability to see blocked urls -Ability to see full cdx line * * The checkAccess() for each url is implemented in the subclasses * * @author ilya * */ public abstract class PrivTokenAuthChecker implements AuthChecker { protected String publicCdxFields = null; protected FieldSplitFormat publicCdxFormat = null; protected List<String> allUrlAccessTokens; protected List<String> ignoreRobotsAccessTokens; protected List<String> allCdxFieldsAccessTokens; protected boolean isAllowed(AuthToken auth, List<String> allowVector) { if (auth == null || auth.authToken == null || allowVector == null) { return false; } if (allowVector.contains(auth.authToken)) { return true; } return false; } @Override public boolean isAllUrlAccessAllowed(AuthToken auth) { if (auth.cachedAllUrlAllow == null) { auth.cachedAllUrlAllow = isAllowed(auth, allUrlAccessTokens); } return auth.cachedAllUrlAllow; } @Override public boolean isAllCdxFieldAccessAllowed(AuthToken auth) { if (auth.cachedAllCdxAllow == null) { auth.cachedAllCdxAllow = isAllowed(auth, allCdxFieldsAccessTokens); } return auth.cachedAllCdxAllow; } @Override public String getPublicCdxFields() { return publicCdxFields; } @Override public FieldSplitFormat getPublicCdxFormat() { return publicCdxFormat; } public void setPublicCdxFields(String publicCdxFields) { this.publicCdxFields = publicCdxFields; this.publicCdxFormat = new FieldSplitFormat(publicCdxFields); } public List<String> getAllUrlAccessTokens() { return allUrlAccessTokens; } public void setAllUrlAccessTokens(List<String> allUrlAccessTokens) { this.allUrlAccessTokens = allUrlAccessTokens; } public List<String> getAllCdxFieldsAccessTokens() { return allCdxFieldsAccessTokens; } public void setAllCdxFieldsAccessTokens( List<String> allCdxFieldsAccessTokens) { this.allCdxFieldsAccessTokens = allCdxFieldsAccessTokens; } public List<String> getIgnoreRobotsAccessTokens() { return ignoreRobotsAccessTokens; } public void setIgnoreRobotsAccessTokens( List<String> ignoreRobotsAccessTokens) { this.ignoreRobotsAccessTokens = ignoreRobotsAccessTokens; } }