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/02/23 18:24:16 UTC

[isis] branch master updated: ISIS-2543: fixes user-role relation management (SecMan/JPA)

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 8a48b95  ISIS-2543: fixes user-role relation management (SecMan/JPA)
8a48b95 is described below

commit 8a48b9596a984388067776069af98fec15c79ab6
Author: Andi Huber <ah...@apache.org>
AuthorDate: Tue Feb 23 19:24:03 2021 +0100

    ISIS-2543: fixes user-role relation management (SecMan/JPA)
---
 .../secman/jpa/dom/role/ApplicationRoleRepository.java         | 10 ++++++++--
 .../isis/extensions/secman/jpa/dom/user/ApplicationUser.java   |  3 ++-
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
index 9f42d90..eb2cfda 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/role/ApplicationRoleRepository.java
@@ -123,8 +123,11 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRoleRepository<
         
         val role = _Casts.<ApplicationRole>uncheckedCast(genericRole);
         val user = _Casts.<ApplicationUser>uncheckedCast(genericUser);
-        // no need to add to users set, since will be done by JDO/DN.
         user.getRoles().add(role);
+        role.getUsers().add(user);
+        
+        // user is the relation owner
+        repository.persistAndFlush(user);
     }
     
     @Override
@@ -134,8 +137,11 @@ implements org.apache.isis.extensions.secman.api.role.ApplicationRoleRepository<
         
         val role = _Casts.<ApplicationRole>uncheckedCast(genericRole);
         val user = _Casts.<ApplicationUser>uncheckedCast(genericUser);
-        // no need to remove from users set, since will be done by JDO/DN.
         user.getRoles().remove(role);
+        role.getUsers().remove(user);
+        
+        // user is the relation owner
+        repository.persistAndFlush(user);
     }
 
     @Override
diff --git a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
index 8f23c44..2f88229 100644
--- a/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
+++ b/extensions/security/secman/persistence-jpa/src/main/java/org/apache/isis/extensions/secman/jpa/dom/user/ApplicationUser.java
@@ -24,6 +24,7 @@ import java.util.Set;
 import java.util.TreeSet;
 
 import javax.inject.Inject;
+import javax.persistence.CascadeType;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.EntityListeners;
@@ -366,7 +367,7 @@ org.apache.isis.extensions.secman.api.user.ApplicationUser {
 //    @javax.jdo.annotations.Persistent(table="ApplicationUserRoles")
 //    @javax.jdo.annotations.Join(column="userId")
 //    @javax.jdo.annotations.Element(column="roleId")
-    @ManyToMany(mappedBy = "users")
+    @ManyToMany(mappedBy = "users", cascade = CascadeType.ALL)
     @JoinTable(
             name = "ApplicationUserRoles",
             joinColumns = {@JoinColumn(name = "userId")},