Update add and delete member roles. Deprecate edit member roles. (#763)
Change-Id: Ice8596c63b64ccf257984b04c8ccf2cf91515b44
diff --git a/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java b/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
index 5481d30..f432ece 100644
--- a/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
+++ b/src/main/java/de/ids_mannheim/korap/dao/RoleDao.java
@@ -16,6 +16,7 @@
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
+import de.ids_mannheim.korap.constant.PredefinedRole;
import de.ids_mannheim.korap.constant.PrivilegeType;
import de.ids_mannheim.korap.entity.Role;
import de.ids_mannheim.korap.entity.Role_;
@@ -28,7 +29,6 @@
*
* @author margaretha
* @see Role
- * @see PrivilegeDao
*/
@Transactional
@Repository
@@ -37,45 +37,42 @@
@PersistenceContext
private EntityManager entityManager;
- @Autowired
- private PrivilegeDao privilegeDao;
+// public void deleteRole (int roleId) {
+// Role r = retrieveRoleById(roleId);
+// entityManager.remove(r);
+// }
+//
+// public void editRoleName (int roleId, PredefinedRole name) {
+// Role r = retrieveRoleById(roleId);
+// r.setName(name);
+// entityManager.persist(r);
+// }
- public void createRole (String name, List<PrivilegeType> privilegeTypes) {
- Role r = new Role();
- r.setName(name);
- entityManager.persist(r);
- privilegeDao.addPrivilegesToRole(r, privilegeTypes);
+
+ public void addRole (Role newRole) {
+ entityManager.persist(newRole);
+ entityManager.flush();
}
-
- public void deleteRole (int roleId) {
- Role r = retrieveRoleById(roleId);
- entityManager.remove(r);
- }
-
- public void editRoleName (int roleId, String name) {
- Role r = retrieveRoleById(roleId);
- r.setName(name);
- entityManager.persist(r);
- }
-
- public Role retrieveRoleById (int roleId) {
+
+ public Role retrieveRoleByName (PredefinedRole role) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Role> query = criteriaBuilder.createQuery(Role.class);
Root<Role> root = query.from(Role.class);
- root.fetch(Role_.privileges);
+// root.fetch(Role_.privileges);
query.select(root);
- query.where(criteriaBuilder.equal(root.get(Role_.id), roleId));
+ query.where(criteriaBuilder.equal(root.get(Role_.name), role));
Query q = entityManager.createQuery(query);
return (Role) q.getSingleResult();
}
+ @Deprecated
public Role retrieveRoleByName (String roleName) {
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Role> query = criteriaBuilder.createQuery(Role.class);
Root<Role> root = query.from(Role.class);
- root.fetch(Role_.privileges);
+// root.fetch(Role_.privileges);
query.select(root);
query.where(criteriaBuilder.equal(root.get(Role_.name), roleName));
Query q = entityManager.createQuery(query);
diff --git a/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java b/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
index bfa8b45..edab0d3 100644
--- a/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
+++ b/src/main/java/de/ids_mannheim/korap/service/UserGroupService.java
@@ -571,7 +571,7 @@
}
public void editMemberRoles (String username, String groupName,
- String memberUsername, List<PredefinedRole> roleIds)
+ String memberUsername, List<PredefinedRole> roleList)
throws KustvaktException {
ParameterChecker.checkStringValue(username, "username");
@@ -597,8 +597,8 @@
}
Set<Role> roles = new HashSet<>();
- for (int i = 0; i < roleIds.size(); i++) {
- roles.add(roleDao.retrieveRoleByName(roleIds.get(i)));
+ for (int i = 0; i < roleList.size(); i++) {
+ roles.add(roleDao.retrieveRoleByName(roleList.get(i)));
}
member.setRoles(roles);
groupMemberDao.updateMember(member);
@@ -651,7 +651,7 @@
}
public void deleteMemberRoles (String username, String groupName,
- String memberUsername, List<Integer> roleIds)
+ String memberUsername, List<PredefinedRole> rolesToBeDeleted)
throws KustvaktException {
ParameterChecker.checkStringValue(username, "username");
@@ -669,7 +669,7 @@
Set<Role> roles = member.getRoles();
Iterator<Role> i = roles.iterator();
while (i.hasNext()) {
- if (roleIds.contains(i.next().getId())) {
+ if (rolesToBeDeleted.contains(i.next().getName())) {
i.remove();
}
}
diff --git a/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java b/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
index eb6f046..c2893df 100644
--- a/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
+++ b/src/main/java/de/ids_mannheim/korap/web/controller/UserGroupController.java
@@ -222,7 +222,8 @@
}
}
- /**
+ /** DEPRECATED for simplicity and easier maintenance.
+ *
* Very similar to addMemberRoles web-service, but allows deletion
* as well.
*
@@ -235,20 +236,21 @@
* a role id or multiple role ids
* @return
*/
+ @Deprecated
@POST
@Path("@{groupName}/role/edit")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response editMemberRoles (@Context SecurityContext securityContext,
@PathParam("groupName") String groupName,
@FormParam("memberUsername") String memberUsername,
- @FormParam("roleId") List<PredefinedRole> roleIds) {
+ @FormParam("roles") List<PredefinedRole> roles) {
TokenContext context = (TokenContext) securityContext
.getUserPrincipal();
try {
scopeService.verifyScope(context,
OAuth2Scope.EDIT_USER_GROUP_MEMBER_ROLE);
service.editMemberRoles(context.getUsername(), groupName,
- memberUsername, roleIds);
+ memberUsername, roles);
return Response.ok("SUCCESS").build();
}
catch (KustvaktException e) {
@@ -275,7 +277,7 @@
public Response addMemberRoles (@Context SecurityContext securityContext,
@PathParam("groupName") String groupName,
@FormParam("memberUsername") String memberUsername,
- @FormParam("roleId") List<PredefinedRole> roles) {
+ @FormParam("role") List<PredefinedRole> roles) {
TokenContext context = (TokenContext) securityContext
.getUserPrincipal();
try {
@@ -310,14 +312,14 @@
public Response deleteMemberRoles (@Context SecurityContext securityContext,
@PathParam("groupName") String groupName,
@FormParam("memberUsername") String memberUsername,
- @FormParam("roleId") List<Integer> roleIds) {
+ @FormParam("role") List<PredefinedRole> roles) {
TokenContext context = (TokenContext) securityContext
.getUserPrincipal();
try {
scopeService.verifyScope(context,
OAuth2Scope.DELETE_USER_GROUP_MEMBER_ROLE);
service.deleteMemberRoles(context.getUsername(), groupName,
- memberUsername, roleIds);
+ memberUsername, roles);
return Response.ok("SUCCESS").build();
}
catch (KustvaktException e) {