Optional<? extends RestxPrincipal> principal = RestxSession.current().getPrincipal();
if (!principal.isPresent()) {
logger.debug("no principal found: request={}", request);
throw new WebException(HttpStatus.UNAUTHORIZED);
}
Optional<? extends Permission> match = permission.has(principal.get(), request);
if (match.isPresent()) {
logger.debug("permission matched: request={} principal={} perm={}", request, principal.get(), match.get());
return;
}
logger.debug("permission not matched: request={} principal={} permission={}",
request, principal.get(), permission);
throw new WebException(HttpStatus.FORBIDDEN);
}