From 8d99c88af55041ff06e6b9372b6b1f66220bed38 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 10 Apr 2017 16:08:58 +0000
Subject: [PATCH] #3529 feature - Added applications to user profile and upgrade to angular4

---
 securis/src/main/java/net/curisit/securis/services/UserResource.java |   36 +++++++++++++++++++++++++++++++-----
 1 files changed, 31 insertions(+), 5 deletions(-)

diff --git a/securis/src/main/java/net/curisit/securis/services/UserResource.java b/securis/src/main/java/net/curisit/securis/services/UserResource.java
index 0c3e233..a4789d4 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -34,6 +34,7 @@
 import net.curisit.integrity.commons.Utils;
 import net.curisit.securis.DefaultExceptionHandler;
 import net.curisit.securis.SeCurisException;
+import net.curisit.securis.db.Application;
 import net.curisit.securis.db.Organization;
 import net.curisit.securis.db.User;
 import net.curisit.securis.ioc.EnsureTransaction;
@@ -131,7 +132,12 @@
 		}
 
 		try {
-			this.setUserOrg(user, user.getOrgsIds(), em);
+			this.setUserOrgs(user, user.getOrgsIds(), em);
+		} catch (SeCurisException e) {
+			return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+		}
+		try {
+			this.setUserApps(user, user.getAppsIds(), em);
 		} catch (SeCurisException e) {
 			return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
 		}
@@ -149,7 +155,7 @@
 		return Response.ok(user).build();
 	}
 
-	private void setUserOrg(User user, Set<Integer> orgsIds, EntityManager em) throws SeCurisException {
+	private void setUserOrgs(User user, Set<Integer> orgsIds, EntityManager em) throws SeCurisException {
 		Set<Organization> orgs = null;
 		if (orgsIds != null && !orgsIds.isEmpty()) {
 			orgs = new HashSet<>();
@@ -165,6 +171,23 @@
 
 		user.setOrganizations(orgs);
 
+	}
+
+	private void setUserApps(User user, Set<Integer> appsIds, EntityManager em) throws SeCurisException {
+		Set<Application> apps = null;
+		if (appsIds != null && !appsIds.isEmpty()) {
+			apps = new HashSet<>();
+			for (Integer appId : appsIds) {
+				Application o = em.find(Application.class, appId);
+				if (o == null) {
+					LOG.error("User application with id {} not found in DB", appId);
+					throw new SeCurisException("User's application not found with ID: " + appId);
+				}
+				apps.add(o);
+			}
+		}
+
+		user.setApplications(apps);
 	}
 
 	@PUT
@@ -185,7 +208,12 @@
 		}
 
 		try {
-			this.setUserOrg(currentUser, user.getOrgsIds(), em);
+			this.setUserOrgs(currentUser, user.getOrgsIds(), em);
+		} catch (SeCurisException e) {
+			return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+		}
+		try {
+			this.setUserApps(currentUser, user.getAppsIds(), em);
 		} catch (SeCurisException e) {
 			return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
 		}
@@ -199,8 +227,6 @@
 		} else {
 			// Password has not been modified
 			// return
-			// Response.status(DefaultExceptionHandler.DEFAULT_APP_ERROR_STATUS_CODE).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
-			// "User password is mandatory").build();
 		}
 
 		currentUser.setLastLogin(user.getLastLogin());

--
Gitblit v1.3.2