From 602c4c4501dcd89cbce1d6ba61ba6bc75761d643 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Sat, 18 Jan 2014 11:23:45 +0000
Subject: [PATCH] #396 feature - Getting all orgs from user including the children ones
---
securis/src/main/java/net/curisit/securis/services/SecurityInterceptor.java | 21 +++++++++++++++++++++
1 files changed, 21 insertions(+), 0 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/services/SecurityInterceptor.java b/securis/src/main/java/net/curisit/securis/services/SecurityInterceptor.java
index ca84402..08c4e2e 100644
--- a/securis/src/main/java/net/curisit/securis/services/SecurityInterceptor.java
+++ b/securis/src/main/java/net/curisit/securis/services/SecurityInterceptor.java
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.List;
+import java.util.Set;
import javax.inject.Inject;
import javax.persistence.EntityManager;
@@ -60,8 +61,27 @@
log.info("User {} has no necessary role to access url: {}", username, servletRequest.getPathInfo());
containerRequestContext.abortWith(Response.status(Status.UNAUTHORIZED).build());
}
+ Set<Integer> orgs = getUserOrganizations(username);
+ servletRequest.setAttribute("user_orgs", orgs);
}
}
+ }
+
+ private Set<Integer> getUserOrganizations(String username) {
+ @SuppressWarnings("unchecked")
+ Set<Integer> userOrgs = cache.get("orgs_" + username, Set.class);
+ if (userOrgs == null) {
+ // Theorically this shouldn't be never null, but just in case...
+ EntityManager em = emProvider.get();
+ User user = em.find(User.class, username);
+ if (user != null) {
+ userOrgs = user.getAllOrgsIds();
+ // We store user orgs in cache only for one hour
+ cache.set("orgs_" + username, userOrgs, 3600);
+ }
+ }
+
+ return userOrgs;
}
private int getUserRoles(String username) {
@@ -79,6 +99,7 @@
}
// We store user roles in cache only for one hour
cache.set("roles_" + username, userRoles, 3600);
+ cache.set("orgs_" + username, user.getOrgsIds(), 3600);
}
}
return userRoles == null ? 0 : userRoles.intValue();
--
Gitblit v1.3.2