001    /**
002     * Implements the CFML Function isuserinrole
003     */
004    package railo.runtime.functions.decision;
005    
006    import railo.commons.lang.StringUtil;
007    import railo.runtime.PageContext;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.ext.function.Function;
010    import railo.runtime.security.Credential;
011    import railo.runtime.type.util.ListUtil;
012    
013    public final class IsUserInAnyRole implements Function {
014            public static boolean call(PageContext pc) throws PageException {
015                    return call(pc, null);
016            }
017            public static boolean call(PageContext pc, String strRoles) throws PageException {
018                    if(StringUtil.isEmpty(strRoles)){
019                            Credential ru = pc.getRemoteUser();
020                            if(ru==null) return false;
021                        return ru.getRoles().length>0;
022                    }
023                    
024                    String[] roles = ListUtil.trimItems(ListUtil.listToStringArray(strRoles, ','));
025                    for(int i=0;i<roles.length;i++) {
026                            if(IsUserInRole.call(pc, roles[i])) return true;
027                    }
028                    return false;
029            }
030    }