diff --git a/api/src/org/labkey/api/audit/query/DefaultAuditTypeTable.java b/api/src/org/labkey/api/audit/query/DefaultAuditTypeTable.java index 38242344c72..631b1cd95fa 100644 --- a/api/src/org/labkey/api/audit/query/DefaultAuditTypeTable.java +++ b/api/src/org/labkey/api/audit/query/DefaultAuditTypeTable.java @@ -34,14 +34,9 @@ import org.labkey.api.query.QueryUpdateService; import org.labkey.api.query.UserSchema; import org.labkey.api.query.column.BuiltInColumnTypes; -import org.labkey.api.security.SecurityManager; -import org.labkey.api.security.User; import org.labkey.api.security.UserPrincipal; import org.labkey.api.security.permissions.Permission; import org.labkey.api.security.permissions.ReadPermission; -import org.labkey.api.security.roles.CanSeeAuditLogRole; -import org.labkey.api.security.roles.Role; -import org.labkey.api.security.roles.RoleManager; import java.util.ArrayList; import java.util.List; @@ -119,14 +114,7 @@ protected void initColumns() @Override protected SimpleFilter.FilterClause getContainerFilterClause(ContainerFilter filter, FieldKey fieldKey) { - // TODO: Setting a contextual role on the container filter clause should not be necessary; the user passed - // (separately) to the ContainerFilter should have the appropriate permission. However, some app actions - // (GetTransactionRowIdsAction, maybe GetLocationHistoryAction, etc.) have been relying on this behavior. Clean - // this up soon, but not for 26.3. Note that this is the only code path that passes contextual roles into - // createFilterClause(), so we could eliminate that option during clean up. - User user = (null == getUserSchema()) ? null : getUserSchema().getUser(); - Set roles = SecurityManager.canSeeAuditLog(user) ? RoleManager.roleSet(CanSeeAuditLogRole.class) : Set.of(); - return filter.createFilterClause(getSchema(), fieldKey, CanSeeAuditLogPermission.class, roles); + return filter.createFilterClause(getSchema(), fieldKey, CanSeeAuditLogPermission.class); } // Subclasses may override this to provide customizations to the column diff --git a/api/src/org/labkey/api/data/ContainerFilter.java b/api/src/org/labkey/api/data/ContainerFilter.java index b5f769bdb28..a68d92fa6a6 100644 --- a/api/src/org/labkey/api/data/ContainerFilter.java +++ b/api/src/org/labkey/api/data/ContainerFilter.java @@ -172,14 +172,7 @@ public FilterClause createFilterClause(DbSchema schema, FieldKey containerFilter /** Create a FilterClause that restricts based on the containers that meet the filter and user that meets the permission*/ public FilterClause createFilterClause(DbSchema schema, FieldKey containerFilterColumn, Class permission) { - return new ContainerClause(schema, containerFilterColumn, this, permission, Set.of()); - } - - /** Create a FilterClause that restricts based on the containers that meet the filter and user that meets the permission*/ - @Deprecated // TODO: only one use, which we should refactor away. GH Issue 1353 - public FilterClause createFilterClause(DbSchema schema, FieldKey containerFilterColumn, Class permission, @NotNull Set contextualRoles) - { - return new ContainerClause(schema, containerFilterColumn, this, permission, contextualRoles); + return new ContainerClause(schema, containerFilterColumn, this, permission); } /** Create an expression for a WHERE clause */ @@ -1312,20 +1305,18 @@ public static class ContainerClause extends FilterClause private final FieldKey _fieldKey; private final ContainerFilter _filter; private final Class _permission; - private final @NotNull Set _contextualRoles; public ContainerClause(DbSchema schema, FieldKey fieldKey, ContainerFilter filter) { - this(schema, fieldKey, filter, null, Set.of()); + this(schema, fieldKey, filter, null); } - public ContainerClause(DbSchema schema, FieldKey fieldKey, ContainerFilter filter, @Nullable Class permission, @NotNull Set contextualRoles) + public ContainerClause(DbSchema schema, FieldKey fieldKey, ContainerFilter filter, @Nullable Class permission) { _schema = schema; _fieldKey = fieldKey; _filter = filter; _permission = permission != null ? permission : ReadPermission.class; - _contextualRoles = contextualRoles; } @Override @@ -1345,7 +1336,7 @@ public SQLFragment toSQLFragment(Map columnMap, { if (_filter instanceof ContainerFilterWithPermission filter) { - return filter.getSQLFragment(_schema, _fieldKey, _permission, _contextualRoles); + return filter.getSQLFragment(_schema, _fieldKey, _permission, Set.of()); } return _filter.getSQLFragment(_schema, _fieldKey, columnMap); } diff --git a/api/src/org/labkey/api/security/ElevatedUser.java b/api/src/org/labkey/api/security/ElevatedUser.java index 46bc6099c21..adc18b2bf81 100644 --- a/api/src/org/labkey/api/security/ElevatedUser.java +++ b/api/src/org/labkey/api/security/ElevatedUser.java @@ -20,7 +20,7 @@ import org.labkey.api.audit.permissions.CanSeeAuditLogPermission; import org.labkey.api.data.Container; import org.labkey.api.security.permissions.Permission; -import org.labkey.api.security.roles.CanSeeAuditLogRole; +import org.labkey.api.security.roles.CanSeeAuditLogFolderRole; import org.labkey.api.security.roles.Role; import org.labkey.api.util.Pair; @@ -111,6 +111,6 @@ public static User ensureContextualRoles(Container container, User user, Pair rowIds, Map dataTypeRowCou private static Predicate inScope(User user, Container container, @Nullable ContainerFilter containerFilter) { ContainerFilter cf = null == containerFilter ? ContainerFilter.current(container, user) : containerFilter; - Collection ids = scopeIds(user, container, cf); + Collection ids = scopeIds(container, cf); if (null == ids) return _ -> true; @@ -302,14 +298,12 @@ private static Predicate inScope(User user, Container container, * the ReadPermission that {@link ContainerFilter#getIds()} applies, so a folder the user can read but whose audit * log they cannot see stays out of scope. */ - private static @Nullable Collection scopeIds(User user, Container container, ContainerFilter cf) + private static @Nullable Collection scopeIds(Container container, ContainerFilter cf) { if (!(cf instanceof ContainerFilter.ContainerFilterWithPermission cfp)) return cf.getIds(); - Set contextualRoles = SecurityManager.canSeeAuditLog(user) ? RoleManager.roleSet(CanSeeAuditLogRole.class) : Set.of(); - - return cfp.generateIds(container, CanSeeAuditLogPermission.class, contextualRoles); + return cfp.generateIds(container, CanSeeAuditLogPermission.class, Set.of()); } public TransactionRowIds getTransactionSampleIds(long transactionAuditId, boolean includeInsertEventOnly, User user, Container container, @Nullable ContainerFilter containerFilter)