001package org.nuxeo.segment.io; 002 003import java.security.Principal; 004import java.util.ArrayList; 005import java.util.List; 006 007import org.nuxeo.common.xmap.annotation.XNode; 008import org.nuxeo.common.xmap.annotation.XNodeList; 009import org.nuxeo.common.xmap.annotation.XObject; 010import org.nuxeo.ecm.core.api.NuxeoPrincipal; 011import org.nuxeo.ecm.platform.usermanager.UserManager; 012import org.nuxeo.runtime.api.Framework; 013 014/** 015 * 016 * @author <a href="mailto:tdelprat@nuxeo.com">Tiry</a> 017 * 018 */ 019@XObject("userFilter") 020public class SegmentIOUserFilter { 021 022 @XNode("enableAnonymous") 023 protected boolean enableAnonymous = false; 024 025 @XNodeList(value = "blackListedUser", type = ArrayList.class, componentType = String.class) 026 protected List<String> blackListedUsers; 027 028 protected String anonymousUserId = null; 029 030 public boolean isEnableAnonymous() { 031 return enableAnonymous; 032 } 033 034 public List<String> getBlackListedUsers() { 035 return blackListedUsers; 036 } 037 038 public String getAnonymousUserId() { 039 if (anonymousUserId == null) { 040 UserManager um = Framework.getLocalService(UserManager.class); 041 if (um==null && Framework.isTestModeSet()) { 042 return "Guest"; 043 } 044 anonymousUserId = um.getAnonymousUserId(); 045 } 046 return anonymousUserId; 047 } 048 049 public boolean canTrack(String principalName) { 050 051 if (!enableAnonymous && principalName.equals(getAnonymousUserId())) { 052 return false; 053 } 054 if (blackListedUsers != null 055 && blackListedUsers.contains(principalName)) { 056 return false; 057 } 058 return true; 059 } 060 061}