@Override public void collect(Map<String, Object> storage) { Object state = AdminRequest.get(); storage.put(KEY, state); }
private boolean canAccess(Authentication user, SecureTreeNode node) { boolean access = node.canAccess(user, AccessMode.READ); if (access && AdminRequest.get() != null) { // admin request, we need to check if we can also admin those return node.canAccess(user, AccessMode.ADMIN); } else { return access; } }
@Override void assertThreadLocalApplied() { assertSame(myState, AdminRequest.get()); } });
@Override void assertThreadLocalCleaned() { assertNull(AdminRequest.get()); }
public WorkspaceAccessLimits getAccessLimits(Authentication user, WorkspaceInfo workspace) { boolean readable = delegate.canAccess(user, workspace, AccessMode.READ); boolean writable = delegate.canAccess(user, workspace, AccessMode.WRITE); boolean adminable = delegate.canAccess(user, workspace, AccessMode.ADMIN); CatalogMode mode = delegate.getMode(); if (readable && writable) { if (AdminRequest.get() == null) { // not admin request, read+write means full acesss return null; } } return new WorkspaceAccessLimits(mode, readable, writable, adminable); }
public WorkspaceAccessLimits getAccessLimits(Authentication user, WorkspaceInfo workspace) { boolean readable = canAccess(user, workspace, AccessMode.READ); boolean writable = canAccess(user, workspace, AccessMode.WRITE); boolean adminable = canAccess(user, workspace, AccessMode.ADMIN); CatalogMode mode = getMode(); if (readable && writable) { if (AdminRequest.get() == null) { // not admin request, read+write means full acesss return null; } } return new WorkspaceAccessLimits(mode, readable, writable, adminable); }
private void testApply() { transfer.apply(); // check all thread locals have been applied to the current thread assertSame(request, Dispatcher.REQUEST.get()); assertSame(myState, AdminRequest.get()); assertSame(layer, LocalPublished.get()); assertSame(ws, LocalWorkspace.get()); assertSame( auth, SecurityContextHolder.getContext().getAuthentication()); }
private void testCleanup() { transfer.cleanup(); // check all thread locals have been cleaned up from the current // thread assertNull(Dispatcher.REQUEST.get()); assertNull(AdminRequest.get()); assertNull(LocalPublished.get()); assertNull(LocalWorkspace.get()); assertNull(SecurityContextHolder.getContext().getAuthentication()); } });