public boolean isUserInRole(Principal p, String role) {
			if (p instanceof CommunityAccount) {
				logger.finer("isUserInRole " + p + " / " + role);
				
				CommunityAccount cast = (CommunityAccount)p;
				
				if( cast.isAdmin() && role.equals("bozo") == false ) {
					logger.finest("Admin " + p + " is also " + role + ", returning true.");
					return true;
				}
				
				if( cast.canModerate() && role.equals("user") ) {
					logger.finest("Moderator " + p + " is also user, returning true.");
					return true;
				}
				
				for( String userRole : cast.getRoles() ) { 
					if( userRole.equals(role) ) {
						logger.finest("User " + p + " in role " + role + ", returning true."); 
						return true;
					}
				}
				
			} else {
				logger.warning("isUserInRole without a community account. " + 
						p != null ? (p + " / " + p.getClass().getName()) :
						"null" );
			}
			logger.finest("User " + p + " not in role, returning false."); 
			return false;
		}