From edd47c68c6a08bd756d96213c38e896a0a257bd1 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Mon, 13 Jan 2014 18:12:51 +0000
Subject: [PATCH] #394 feature - Several fixes related with form management
---
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 17 +++++++++++++++--
1 files changed, 15 insertions(+), 2 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
index b8b8cc3..a7cbbcf 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -96,6 +96,15 @@
return Response.ok(lt).build();
}
+ private boolean isCyclicalRelationship(int currentId, Organization parent) {
+ while (parent != null) {
+ if (parent.getId() == currentId)
+ return true;
+ parent = parent.getParentOrganization();
+ }
+ return false;
+ }
+
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@@ -157,6 +166,10 @@
log.error("Organization parent with id {} not found in DB", org.getParentOrgId());
return Response.status(Status.NOT_FOUND).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "Organization's parent not found with ID: " + org.getParentOrgId()).build();
}
+ if (isCyclicalRelationship(currentOrg.getId(), parentOrg)) {
+ log.error("Organization parent generate a cyclical relationship, parent id {}, current id: {}", org.getParentOrgId(), currentOrg.getId());
+ return Response.status(Status.FORBIDDEN).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "Cyclical relationships are not allowed, please change the parent organization, current Parent: " + parentOrg.getName()).build();
+ }
}
List<User> users = null;
@@ -165,8 +178,8 @@
users = new ArrayList<>();
for (String username : usersIds) {
User user = em.find(User.class, username);
- if (parentOrg == null) {
- log.error("Organization user with id {} not found in DB", username);
+ if (user == null) {
+ log.error("Organization user with id '{}' not found in DB", username);
return Response.status(Status.NOT_FOUND).header(SecurisErrorHandler.HEADER_ERROR_MESSAGE, "Organization's user not found with ID: " + username).build();
}
users.add(user);
--
Gitblit v1.3.2