@Override public Boolean apply(Object action) { return isAuthorized(acl, user, org, action); } };
/** * Returns true if <em>all</em> actions are prohibited. * * @see #isAuthorized(AccessControlList, User, Organization, Object) */ public static boolean isProhibitedAll(AccessControlList acl, User user, Organization org, Object... actions) { return !$(actions).exists(isAuthorizedFn(acl, user, org)); }
/** Calculate an MD5 checksum for an {@link AccessControlList}. */ public static Checksum calculateChecksum(AccessControlList acl) { // Use 0 as a word separator. This is safe since none of the UTF-8 code points // except \u0000 contains a null byte when converting to a byte array. final byte[] sep = new byte[] { 0 }; final MessageDigest md = $(acl.getEntries()).sort(sortAcl).bind(new Fn<AccessControlEntry, Stream<String>>() { @Override public Stream<String> apply(AccessControlEntry entry) { return $(entry.getRole(), entry.getAction(), Boolean.toString(entry.isAllow())); } }).foldl(mkMd5MessageDigest(), new Fn2<MessageDigest, String, MessageDigest>() { @Override public MessageDigest apply(MessageDigest digest, String s) { digest.update(s.getBytes(StandardCharsets.UTF_8)); // add separator byte (see definition above) digest.update(sep); return digest; } }); try { return Checksum.create("md5", Checksum.convertToHex(md.digest())); } catch (NoSuchAlgorithmException e) { return chuck(e); } }
/** * Returns true if at least <em>one</em> action is authorized. * * @see #isAuthorized(AccessControlList, User, Organization, Object) */ public static boolean isAuthorizedOne(AccessControlList acl, User user, Organization org, Object... actions) { return $(actions).exists(isAuthorizedFn(acl, user, org)); }
/** * Returns true only if <em>all</em> actions are authorized. * * @see #isAuthorized(AccessControlList, User, Organization, Object) */ public static boolean isAuthorizedAll(AccessControlList acl, User user, Organization org, Object... actions) { return !$(actions).exists(Booleans.not(isAuthorizedFn(acl, user, org))); }
/** * Returns true if at least <em>one</em> action is prohibited. * * @see #isAuthorized(AccessControlList, User, Organization, Object) */ public static boolean isProhibitedOne(AccessControlList acl, User user, Organization org, Object... actions) { return $(actions).exists(Booleans.not(isAuthorizedFn(acl, user, org))); }