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")},