You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/09/07 12:00:38 UTC

[isis] branch master updated: ISIS-2774: fixes recursive call in ImpersonateMenu.impersonate

This is an automated email from the ASF dual-hosted git repository.

ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git


The following commit(s) were added to refs/heads/master by this push:
     new 98fbbb9  ISIS-2774: fixes recursive call in ImpersonateMenu.impersonate
98fbbb9 is described below

commit 98fbbb98966975e9723f1b531764dc7d0e21ece0
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Sep 7 14:00:31 2021 +0200

    ISIS-2774: fixes recursive call in ImpersonateMenu.impersonate
---
 .../java/org/apache/isis/applib/services/user/ImpersonateMenu.java | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
index c09844c..8bb1f46 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/services/user/ImpersonateMenu.java
@@ -35,6 +35,7 @@ import org.apache.isis.applib.annotation.PriorityPrecedence;
 import org.apache.isis.applib.annotation.Publishing;
 import org.apache.isis.applib.annotation.RestrictTo;
 import org.apache.isis.applib.annotation.SemanticsOf;
+import org.apache.isis.applib.services.factory.FactoryService;
 import org.apache.isis.applib.services.message.MessageService;
 
 import lombok.RequiredArgsConstructor;
@@ -74,10 +75,10 @@ public class ImpersonateMenu {
 
     final UserService userService;
     final MessageService messageService;
+    final FactoryService factoryService;
     final List<ImpersonateMenuAdvisor> impersonateMenuAdvisors;
 
 
-
     @Action(
             domainEvent = impersonate.ActionEvent.class,
             semantics = SemanticsOf.IDEMPOTENT,
@@ -103,7 +104,9 @@ public class ImpersonateMenu {
             messageService.informUser("Now impersonating " + userName);
         }
         @MemberSupport public boolean hideAct() {
-            return ! userService.supportsImpersonation() || !hideAct();
+            // when supported, either 'impersonate' or 'impersonateWithRoles' should show up but not both
+            return ! userService.supportsImpersonation()
+                    || ! factoryService.mixin(impersonateWithRoles.class, ImpersonateMenu.this).hideAct();
         }
         @MemberSupport public String disableAct() {
             return userService.isImpersonating() ? "currently impersonating" : null;