From 0c49be4df73524ec03db8fadb632099c45366564 Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Wed, 31 Jul 2024 19:35:43 -0700 Subject: [PATCH 1/2] Allow overriding RoleImpersonation behavior --- api/src/org/labkey/api/security/User.java | 2 +- .../impersonation/RoleImpersonationContextFactory.java | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/api/src/org/labkey/api/security/User.java b/api/src/org/labkey/api/security/User.java index d082ebd7cf1..b948df38130 100644 --- a/api/src/org/labkey/api/security/User.java +++ b/api/src/org/labkey/api/security/User.java @@ -398,7 +398,7 @@ public void setLastActivity(Date lastActivity) _lastActivity = lastActivity; } - void setImpersonationContext(ImpersonationContext impersonationContext) + public void setImpersonationContext(ImpersonationContext impersonationContext) { _impersonationContext = impersonationContext; } diff --git a/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java b/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java index 59bb013d2e3..5d35bb63d23 100644 --- a/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java +++ b/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java @@ -194,13 +194,13 @@ public static Stream getValidImpersonationRoles(Container c, User user) .filter(role -> !role.isPrivileged() || canImpersonatePrivilegedRoles); } - private static class RoleImpersonationContext extends AbstractImpersonationContext + public static class RoleImpersonationContext extends AbstractImpersonationContext { private final RoleSet _roles; private final String _cacheKey; @JsonCreator - private RoleImpersonationContext( + public RoleImpersonationContext( @JsonProperty("_project") @Nullable Container project, @JsonProperty("_adminUser") User adminUser, @JsonProperty("_roles") RoleSet roles, @@ -298,5 +298,10 @@ public void addMenu(NavTree menu, Container c, User user, ActionURL currentURL) super.addMenu(menu, c, user, currentURL); RoleImpersonationContextFactory.addMenu(menu, "Adjust Impersonation"); } + + public RoleSet getRoles() + { + return _roles; + } } } From ebf6210f80a7d8477bfbd79fa00fa5e1b61f49e9 Mon Sep 17 00:00:00 2001 From: Marty Pradere Date: Mon, 5 Aug 2024 08:38:51 -0700 Subject: [PATCH 2/2] CR refactor --- api/src/org/labkey/api/security/User.java | 2 +- .../security/impersonation/RoleImpersonationContextFactory.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/api/src/org/labkey/api/security/User.java b/api/src/org/labkey/api/security/User.java index b948df38130..d082ebd7cf1 100644 --- a/api/src/org/labkey/api/security/User.java +++ b/api/src/org/labkey/api/security/User.java @@ -398,7 +398,7 @@ public void setLastActivity(Date lastActivity) _lastActivity = lastActivity; } - public void setImpersonationContext(ImpersonationContext impersonationContext) + void setImpersonationContext(ImpersonationContext impersonationContext) { _impersonationContext = impersonationContext; } diff --git a/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java b/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java index 5d35bb63d23..597e99be21c 100644 --- a/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java +++ b/api/src/org/labkey/api/security/impersonation/RoleImpersonationContextFactory.java @@ -200,7 +200,7 @@ public static class RoleImpersonationContext extends AbstractImpersonationContex private final String _cacheKey; @JsonCreator - public RoleImpersonationContext( + private RoleImpersonationContext( @JsonProperty("_project") @Nullable Container project, @JsonProperty("_adminUser") User adminUser, @JsonProperty("_roles") RoleSet roles,