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 2020/02/18 12:42:48 UTC

[isis] branch master updated: ISIS-2158: improved usability for ApplicationUser

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 437f6fb  ISIS-2158: improved usability for ApplicationUser
437f6fb is described below

commit 437f6fb87beeb52a6cb42ab4de787a46b02004b7
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 18 13:42:39 2020 +0100

    ISIS-2158: improved usability for ApplicationUser
---
 .../dom/role/ApplicationRole_removeUsers.java      |  2 +-
 .../model/dom/user/ApplicationUser_removeRole.java | 18 +++++------
 ...eRole.java => ApplicationUser_removeRoles.java} | 36 ++++++++++++----------
 3 files changed, 28 insertions(+), 28 deletions(-)

diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removeUsers.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removeUsers.java
index b1241ee..5945629 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removeUsers.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/role/ApplicationRole_removeUsers.java
@@ -59,7 +59,7 @@ public class ApplicationRole_removeUsers {
         return holder;
     }
     
-    private boolean canRemove(ApplicationUser applicationUser) {
+    public boolean canRemove(ApplicationUser applicationUser) {
         if(applicationUserRepository.isAdminUser(applicationUser) 
                 && applicationRoleRepository.isAdminRole(holder)) {
             messageService.warnUser("Cannot remove admin user from the admin role.");
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java
index caebf84..ee2d78c 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java
@@ -23,23 +23,21 @@ import java.util.Collection;
 import javax.enterprise.inject.Model;
 import javax.inject.Inject;
 
-import org.apache.isis.applib.annotation.Action;
-import org.apache.isis.applib.annotation.ActionLayout;
 import org.apache.isis.extensions.secman.api.role.ApplicationRole;
 import org.apache.isis.extensions.secman.api.role.ApplicationRoleRepository;
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
-import org.apache.isis.extensions.secman.api.user.ApplicationUser.RemoveRoleDomainEvent;
 import org.apache.isis.extensions.secman.api.user.ApplicationUserRepository;
 
 import lombok.RequiredArgsConstructor;
 
-@Action(
-        domainEvent = RemoveRoleDomainEvent.class, 
-        associateWith = "roles",
-        associateWithSequence = "2")
-@ActionLayout(
-        named="Remove"
-        )
+//@Action(
+//        domainEvent = RemoveRoleDomainEvent.class, 
+//        associateWith = "roles",
+//        associateWithSequence = "2")
+//@ActionLayout(
+//        named="Remove"
+//        )
+@Deprecated
 @RequiredArgsConstructor
 public class ApplicationUser_removeRole {
     
diff --git a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRoles.java
similarity index 76%
copy from extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java
copy to extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRoles.java
index caebf84..f28d041 100644
--- a/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRole.java
+++ b/extensions/security/secman/model/src/main/java/org/apache/isis/extensions/secman/model/dom/user/ApplicationUser_removeRoles.java
@@ -25,6 +25,8 @@ import javax.inject.Inject;
 
 import org.apache.isis.applib.annotation.Action;
 import org.apache.isis.applib.annotation.ActionLayout;
+import org.apache.isis.applib.services.message.MessageService;
+import org.apache.isis.core.commons.internal.base._NullSafe;
 import org.apache.isis.extensions.secman.api.role.ApplicationRole;
 import org.apache.isis.extensions.secman.api.role.ApplicationRoleRepository;
 import org.apache.isis.extensions.secman.api.user.ApplicationUser;
@@ -41,37 +43,37 @@ import lombok.RequiredArgsConstructor;
         named="Remove"
         )
 @RequiredArgsConstructor
-public class ApplicationUser_removeRole {
+public class ApplicationUser_removeRoles {
     
+    @Inject private MessageService messageService;
     @Inject private ApplicationRoleRepository<? extends ApplicationRole> applicationRoleRepository;
     @Inject private ApplicationUserRepository<? extends ApplicationUser> applicationUserRepository;
     
     private final ApplicationUser holder;
 
+    
     @Model
-    public ApplicationUser act(final ApplicationRole role) {
-        applicationRoleRepository.removeRoleFromUser(role, holder);
+    public ApplicationUser act(Collection<ApplicationRole> roles) {
+        
+        _NullSafe.stream(roles)
+        .filter(this::canRemove)
+        .forEach(role->applicationRoleRepository.removeRoleFromUser(role, holder));
+        
         return holder;
     }
 
     @Model
-    public String disableAct() {
-        return holder.getRoles().isEmpty()? "No roles to remove": null;
-    }
-
-    @Model
-    public Collection<? extends ApplicationRole> choices0Act() {
-        return applicationRoleRepository.getRoles(holder);
-    }
-
-    @Model
-    // duplicated in ApplicationRole_removeUser mixin
-    public String validateAct(
+    // same logic in ApplicationRole_removeUsers
+    public boolean canRemove(
             final ApplicationRole applicationRole) {
+        
         if(applicationUserRepository.isAdminUser(holder) 
                 && applicationRoleRepository.isAdminRole(applicationRole)) {
-            return "Cannot remove admin user from the admin role.";
+            messageService.warnUser("Cannot remove admin user from the admin role.");
+            return false;
         }
-        return null;
+        return true;
     }
+     
+    
 }