Roberto Sánchez
2014-01-21 d7a35d13cd691e6821f774b624e4203a404e67d9
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
....@@ -4,6 +4,7 @@
44 import java.util.Date;
55 import java.util.List;
66
7
+import javax.annotation.security.RolesAllowed;
78 import javax.inject.Inject;
89 import javax.inject.Provider;
910 import javax.persistence.EntityManager;
....@@ -27,8 +28,11 @@
2728 import net.curisit.securis.SecurisErrorHandler;
2829 import net.curisit.securis.db.Organization;
2930 import net.curisit.securis.db.User;
31
+import net.curisit.securis.security.BasicSecurityContext;
32
+import net.curisit.securis.security.Securable;
3033 import net.curisit.securis.utils.TokenHelper;
3134
35
+import org.jboss.resteasy.spi.ResteasyProviderFactory;
3236 import org.slf4j.Logger;
3337 import org.slf4j.LoggerFactory;
3438
....@@ -45,10 +49,7 @@
4549 private static final Logger log = LoggerFactory.getLogger(OrganizationResource.class);
4650
4751 @Inject
48
- TokenHelper tokenHelper;
49
-
50
- @Inject
51
- Provider<EntityManager> emProvider;
52
+ private Provider<EntityManager> emProvider;
5253
5354 public OrganizationResource() {
5455 }
....@@ -61,11 +62,30 @@
6162 @Path("/")
6263 @Produces(
6364 { MediaType.APPLICATION_JSON })
64
- public Response index() {
65
+ @Securable
66
+ // @RolesAllowed(SecurityContextWrapper.ROL_ADVANCE)
67
+ public Response index(@Context BasicSecurityContext bsc) {
6568 log.info("Getting organizations list ");
6669
70
+ // log.info("User orgs: {}", request.getAttribute("oser_orgs"));
71
+ BasicSecurityContext bsc2 = ResteasyProviderFactory.getContextData(BasicSecurityContext.class);
72
+ log.info("bsc: {}", bsc);
73
+ log.info("bsc2: {}", bsc2);
74
+ // log.info("securityContext: {}", scw);
75
+ log.info("securityContext ROL_ADMIN?: {}", bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN));
6776 EntityManager em = emProvider.get();
68
- TypedQuery<Organization> q = em.createNamedQuery("list-organizations", Organization.class);
77
+ TypedQuery<Organization> q;
78
+ if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
79
+ log.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
80
+ q = em.createNamedQuery("list-organizations", Organization.class);
81
+ } else {
82
+ q = em.createNamedQuery("list-organizations", Organization.class);
83
+ // if (securityContext.getOrganizationsIds() == null)
84
+ // Response.ok().build();
85
+ // log.info("Getting only {} orgs for user: {}", securityContext.getOrganizationsIds(), securityContext.getUserPrincipal());
86
+ // q = em.createNamedQuery("list-organizations-by-ids", Organization.class);
87
+ // q.setParameter("list_ids", securityContext.getOrganizationsIds());
88
+ }
6989
7090 List<Organization> list = q.getResultList();
7191
....@@ -80,12 +100,17 @@
80100 @Path("/{orgid}")
81101 @Produces(
82102 { MediaType.APPLICATION_JSON })
103
+ @Securable
83104 public Response get(@PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
84105 log.info("Getting organization data for id: {}: ", orgid);
85106 if (orgid == null || orgid.equals("")) {
86107 log.error("Organization ID is mandatory");
87108 return Response.status(Status.NOT_FOUND).build();
88109 }
110
+ // if (!securityContext.isOrgAccesible(Integer.parseInt(orgid))) {
111
+ // log.error("Organization with id {} not accessible for user: {}", orgid, securityContext.getUserPrincipal());
112
+ // return Response.status(Status.UNAUTHORIZED).build();
113
+ // }
89114
90115 EntityManager em = emProvider.get();
91116 Organization lt = em.find(Organization.class, Integer.parseInt(orgid));
....@@ -111,6 +136,8 @@
111136 @Produces(
112137 { MediaType.APPLICATION_JSON })
113138 @Transactional
139
+ @Securable
140
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
114141 public Response create(Organization org, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
115142 log.info("Creating new organization");
116143 EntityManager em = emProvider.get();
....@@ -151,6 +178,8 @@
151178 @Consumes(MediaType.APPLICATION_JSON)
152179 @Produces(
153180 { MediaType.APPLICATION_JSON })
181
+ @Securable
182
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
154183 public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
155184 log.info("Modifying organization with id: {}", orgid);
156185 EntityManager em = emProvider.get();
....@@ -201,6 +230,8 @@
201230 @Transactional
202231 @Produces(
203232 { MediaType.APPLICATION_JSON })
233
+ @Securable
234
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
204235 public Response delete(@PathParam("orgid") String orgid, @Context HttpServletRequest request) {
205236 log.info("Deleting organization with id: {}", orgid);
206237 EntityManager em = emProvider.get();