
org.revenj.security.PermissionManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of revenj-core Show documentation
Show all versions of revenj-core Show documentation
DSL Platform compatible backend (https://dsl-platform.com)
The newest version!
package org.revenj.security;
import org.revenj.patterns.Query;
import org.revenj.patterns.Specification;
import org.revenj.patterns.DataSource;
import java.io.Closeable;
import java.security.Principal;
import java.util.List;
import java.util.Objects;
public interface PermissionManager {
boolean canAccess(String identifier, Principal user);
default boolean canAccess(Class> manifest, Principal user) {
return canAccess(manifest.getTypeName(), user);
}
Query applyFilters(Class manifest, Principal user, Query data);
default Query applyFilters(Class manifest, Query data) {
return applyFilters(manifest, boundPrincipal.get(), data);
}
List applyFilters(Class manifest, Principal user, List data);
default List applyFilters(Class manifest, List data) {
return applyFilters(manifest, boundPrincipal.get(), data);
}
Closeable registerFilter(Class manifest, Specification filter, String role, boolean inverse);
default Closeable registerForRole(Class manifest, Specification filter, String role) {
return registerFilter(manifest, filter, role, false);
}
default Closeable registerWhenNotInRole(Class manifest, Specification filter, String role) {
return registerFilter(manifest, filter, role, true);
}
ThreadLocal boundPrincipal = new ThreadLocal<>();
static boolean implies(String role) {
Principal principal = boundPrincipal.get();
if (principal instanceof UserPrincipal) {
return ((UserPrincipal) principal).implies(role);
}
return principal != null && Objects.equals(role, principal.getName());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy