From 84588a793c9484f9182d253ed83ad11687a1d4f8 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Thu, 13 Apr 2017 17:18:56 +0000
Subject: [PATCH] #3529 feature - Added new role for readonly
---
securis/src/main/webapp/src/app/forms/user.form.component.ts | 15 +
securis/src/main/webapp/jspm.config.js | 20 -
securis/src/main/java/net/curisit/securis/services/ApiResource.java | 11
securis/src/main/java/net/curisit/securis/db/User.java | 3
securis/src/main/webapp/jspm.browser.js | 9
securis/src/main/webapp/src/main.ts | 2
securis/src/main/java/net/curisit/securis/db/Pack.java | 2
securis/src/main/webapp/package.json | 2
securis/src/main/java/net/curisit/securis/services/ApplicationResource.java | 7
securis/src/main/java/net/curisit/securis/services/PackResource.java | 26 +-
securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java | 7
/dev/null | 9
securis/src/main/webapp/src/app/forms/user.form.html | 3
securis/src/main/webapp/index.html | 9
securis/src/main/java/net/curisit/securis/services/UserResource.java | 7
securis/src/main/java/net/curisit/securis/services/LicenseResource.java | 17
securis/src/main/webapp/bs-config.js | 33 +++
securis/src/main/java/net/curisit/securis/services/OrganizationResource.java | 381 ++++++++++++++++++-------------------
18 files changed, 293 insertions(+), 270 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/db/Pack.java b/securis/src/main/java/net/curisit/securis/db/Pack.java
index 3ff3493..b4ee893 100644
--- a/securis/src/main/java/net/curisit/securis/db/Pack.java
+++ b/securis/src/main/java/net/curisit/securis/db/Pack.java
@@ -44,7 +44,7 @@
@NamedQuery(name = "pack-by-code", query = "SELECT pa FROM Pack pa where pa.code = :code"), //
@NamedQuery(name = "list-packs-by-lic-type", query = "SELECT pa FROM Pack pa where pa.licenseType.id = :lt_id"), //
@NamedQuery(name = "list-packs-by-orgs-apps", query = "SELECT pa FROM Pack pa where pa.organization.id in :list_ids_org and pa.licenseType.application.id in :list_ids_app "), //
- @NamedQuery(name = "list-packs-by-orgs", query = "SELECT pa FROM Pack pa where pa.organization.id in :list_ids") })
+ @NamedQuery(name = "list-packs-by-apps", query = "SELECT pa FROM Pack pa where pa.licenseType.application.id in :list_ids_app ") })
public class Pack implements Serializable {
private static final long serialVersionUID = 1L;
diff --git a/securis/src/main/java/net/curisit/securis/db/User.java b/securis/src/main/java/net/curisit/securis/db/User.java
index d5b0f45..731280f 100644
--- a/securis/src/main/java/net/curisit/securis/db/User.java
+++ b/securis/src/main/java/net/curisit/securis/db/User.java
@@ -294,7 +294,8 @@
public static final int ADVANCE = 0x01;
public static final int ADMIN = 0x02;
public static final int BASIC = 0x04;
- public static final int[] ALL = new int[] { ADVANCE, ADMIN, BASIC };
+ public static final int API_CLIENT = 0x80;
+ public static final int[] ALL = new int[] { ADVANCE, ADMIN, BASIC }; // ALL except the special API client
}
}
diff --git a/securis/src/main/java/net/curisit/securis/services/ApiResource.java b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
index de78528..5211a5e 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApiResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
@@ -35,6 +35,7 @@
import net.curisit.securis.db.LicenseStatus;
import net.curisit.securis.db.Pack;
import net.curisit.securis.db.User;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -111,7 +112,7 @@
@POST
@Path("/request")
@Consumes(MediaType.APPLICATION_JSON)
- @Securable
+ @Securable(roles = Rol.API_CLIENT)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
public Response createFromRequest(RequestBean request, @HeaderParam(LicenseManager.HEADER_LICENSE_NAME_OR_REFERENCE) String nameOrReference,
@@ -135,7 +136,7 @@
@POST
@Path("/request")
@Consumes(MediaType.MULTIPART_FORM_DATA)
- @Securable
+ @Securable(roles = Rol.API_CLIENT)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
@SuppressWarnings("unchecked")
@@ -168,7 +169,7 @@
@POST
@Path("/renew")
@Consumes(MediaType.APPLICATION_JSON)
- @Securable
+ @Securable(roles = Rol.API_CLIENT)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
public Response renewFromPreviousLicense(LicenseBean previousLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, SeCurisException {
@@ -208,7 +209,7 @@
@POST
@Path("/validate")
@Consumes(MediaType.APPLICATION_JSON)
- @Securable
+ @Securable(roles = Rol.API_CLIENT)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
public Response validate(LicenseBean currentLic, @Context BasicSecurityContext bsc) throws IOException, SeCurisServiceException, SeCurisException {
@@ -242,7 +243,7 @@
@POST
@Path("/renew")
@Consumes(MediaType.MULTIPART_FORM_DATA)
- @Securable
+ @Securable(roles = Rol.API_CLIENT)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
@SuppressWarnings("unchecked")
diff --git a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
index e3fcced..e62cdb4 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApplicationResource.java
@@ -32,6 +32,7 @@
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.db.Application;
import net.curisit.securis.db.ApplicationMetadata;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -120,7 +121,7 @@
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(Application app, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new application");
@@ -146,7 +147,7 @@
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(Application app, @PathParam("appid") String appid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying application with id: {}", appid);
@@ -209,7 +210,7 @@
@Path("/{appid}")
@EnsureTransaction
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("appid") String appid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", appid);
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
index b333818..a296158 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -49,6 +49,7 @@
import net.curisit.securis.db.Pack;
import net.curisit.securis.db.PackStatus;
import net.curisit.securis.db.User;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -175,7 +176,7 @@
@PUT
@POST
@Path("/{licId}/activate")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -220,7 +221,7 @@
@PUT
@POST
@Path("/{licId}/send")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -274,7 +275,7 @@
@PUT
@POST
@Path("/{licId}/cancel")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -317,7 +318,7 @@
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
@@ -456,7 +457,7 @@
@PUT
@POST
@Path("/{licId}")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -506,7 +507,7 @@
@DELETE
@Path("/{licId}")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@Produces({ MediaType.APPLICATION_JSON })
public Response delete(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Deleting license with id: {}", licId);
@@ -536,7 +537,7 @@
@POST
@Path("/{licId}/block")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@Produces({ MediaType.APPLICATION_JSON })
public Response block(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Blocking license with id: {}", licId);
@@ -567,7 +568,7 @@
@POST
@Path("/{licId}/unblock")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@Produces({ MediaType.APPLICATION_JSON })
public Response unblock(@PathParam("licId") Integer licId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
LOG.info("Unblocking license with id: {}", licId);
diff --git a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
index ea63e1b..3422cbb 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseTypeResource.java
@@ -34,6 +34,7 @@
import net.curisit.securis.db.Application;
import net.curisit.securis.db.LicenseType;
import net.curisit.securis.db.LicenseTypeMetadata;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -115,7 +116,7 @@
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(LicenseType lt, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new license type");
@@ -163,7 +164,7 @@
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(LicenseType lt, @PathParam("ltid") String ltid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying license type with id: {}", ltid);
@@ -236,7 +237,7 @@
@Path("/{ltid}")
@EnsureTransaction
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("ltid") String ltid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", ltid);
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 366bdcd..2a53496 100644
--- a/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/OrganizationResource.java
@@ -24,18 +24,19 @@
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
import net.curisit.integrity.commons.Utils;
import net.curisit.securis.DefaultExceptionHandler;
import net.curisit.securis.SeCurisException;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.User;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
import net.curisit.securis.utils.TokenHelper;
-
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
/**
* Organization resource, this service will provide methods to create, modify
@@ -47,225 +48,207 @@
@RequestScoped
public class OrganizationResource {
- private static final Logger LOG = LogManager.getLogger(OrganizationResource.class);
+ private static final Logger LOG = LogManager.getLogger(OrganizationResource.class);
- @Context
- EntityManager em;
+ @Context
+ EntityManager em;
- @Context
- BasicSecurityContext bsc;
+ @Context
+ BasicSecurityContext bsc;
- public OrganizationResource() {
- }
+ public OrganizationResource() {
+ }
- /**
- *
- * @return the server version in format majorVersion.minorVersion
- */
- @GET
- @Path("/")
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @Securable
- public Response index() {
- LOG.info("Getting organizations list ");
+ /**
+ *
+ * @return the server version in format majorVersion.minorVersion
+ */
+ @GET
+ @Path("/")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Securable
+ public Response index() {
+ LOG.info("Getting organizations list ");
- // EntityManager em = emProvider.get();
- em.clear();
- TypedQuery<Organization> q;
- if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
- LOG.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
- q = em.createNamedQuery("list-organizations", Organization.class);
- } else {
- q = em.createNamedQuery("list-organizations", Organization.class);
- }
+ // EntityManager em = emProvider.get();
+ em.clear();
+ TypedQuery<Organization> q;
+ if (bsc.isUserInRole(BasicSecurityContext.ROL_ADMIN)) {
+ LOG.info("GEtting all orgs for user: " + bsc.getUserPrincipal());
+ q = em.createNamedQuery("list-organizations", Organization.class);
+ } else {
+ q = em.createNamedQuery("list-organizations", Organization.class);
+ }
- List<Organization> list = q.getResultList();
+ List<Organization> list = q.getResultList();
- return Response.ok(list).build();
- }
+ return Response.ok(list).build();
+ }
- /**
- *
- * @return the server version in format majorVersion.minorVersion
- */
- @GET
- @Path("/{orgid}")
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @Securable
- public Response get(@PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
- LOG.info("Getting organization data for id: {}: ", orgid);
- if (orgid == null || "".equals(orgid)) {
- LOG.error("Organization ID is mandatory");
- return Response.status(Status.NOT_FOUND).build();
- }
+ /**
+ *
+ * @return the server version in format majorVersion.minorVersion
+ */
+ @GET
+ @Path("/{orgid}")
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Securable
+ public Response get(@PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ LOG.info("Getting organization data for id: {}: ", orgid);
+ if (orgid == null || "".equals(orgid)) {
+ LOG.error("Organization ID is mandatory");
+ return Response.status(Status.NOT_FOUND).build();
+ }
- // EntityManager em = emProvider.get();
- em.clear();
- Organization org = em.find(Organization.class, Integer.parseInt(orgid));
- if (org == null) {
- LOG.error("Organization with id {} not found in DB", orgid);
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization not found, id: " + orgid)
- .build();
- }
- return Response.ok(org).build();
- }
+ // EntityManager em = emProvider.get();
+ em.clear();
+ Organization org = em.find(Organization.class, Integer.parseInt(orgid));
+ if (org == null) {
+ LOG.error("Organization with id {} not found in DB", orgid);
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization not found, id: " + orgid).build();
+ }
+ return Response.ok(org).build();
+ }
- private boolean isCyclicalRelationship(int currentId, Organization parent) {
- while (parent != null) {
- if (parent.getId() == currentId) {
- return true;
- }
- parent = parent.getParentOrganization();
- }
- return false;
- }
+ 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)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- public Response create(Organization org) {
- LOG.info("Creating new organization");
- // EntityManager em = emProvider.get();
+ @POST
+ @Path("/")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ @EnsureTransaction
+ @Securable(roles = Rol.ADMIN)
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ public Response create(Organization org) {
+ LOG.info("Creating new organization");
+ // EntityManager em = emProvider.get();
- try {
- this.setParentOrg(org, org.getParentOrgId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ this.setParentOrg(org, org.getParentOrgId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- Set<User> users = null;
- Set<String> usersIds = org.getUsersIds();
- if (usersIds != null && !usersIds.isEmpty()) {
- users = new HashSet<>();
- for (String username : usersIds) {
- User user = em.find(User.class, username);
- if (user == null) {
- LOG.error("Organization user with id {} not found in DB", username);
- return Response.status(Status.NOT_FOUND)
- .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization's user not found with ID: " + username).build();
- }
- users.add(user);
- }
- }
+ Set<User> users = null;
+ Set<String> usersIds = org.getUsersIds();
+ if (usersIds != null && !usersIds.isEmpty()) {
+ users = new HashSet<>();
+ for (String username : usersIds) {
+ User user = em.find(User.class, username);
+ if (user == null) {
+ LOG.error("Organization user with id {} not found in DB", username);
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization's user not found with ID: " + username).build();
+ }
+ users.add(user);
+ }
+ }
- org.setUsers(users);
- org.setCreationTimestamp(new Date());
- em.persist(org);
- return Response.ok(org).build();
- }
+ org.setUsers(users);
+ org.setCreationTimestamp(new Date());
+ em.persist(org);
+ return Response.ok(org).build();
+ }
- private void setParentOrg(Organization org, Integer parentOrgId, EntityManager em) throws SeCurisException {
- Organization parentOrg = null;
- if (parentOrgId != null) {
- parentOrg = em.find(Organization.class, parentOrgId);
- if (parentOrg == null) {
- LOG.error("Organization parent with id {} not found in DB", org.getParentOrgId());
- throw new SecurityException("Organization's parent not found with ID: " + org.getParentOrgId());
- }
- }
+ private void setParentOrg(Organization org, Integer parentOrgId, EntityManager em) throws SeCurisException {
+ Organization parentOrg = null;
+ if (parentOrgId != null) {
+ parentOrg = em.find(Organization.class, parentOrgId);
+ if (parentOrg == null) {
+ LOG.error("Organization parent with id {} not found in DB", org.getParentOrgId());
+ throw new SecurityException("Organization's parent not found with ID: " + org.getParentOrgId());
+ }
+ }
- org.setParentOrganization(parentOrg);
- }
+ org.setParentOrganization(parentOrg);
+ }
- private void setOrgUsers(Organization org, Set<String> usersIds, EntityManager em) throws SeCurisException {
- Set<User> users = null;
- if (usersIds != null && !usersIds.isEmpty()) {
- users = new HashSet<>();
- for (String username : usersIds) {
- User user = em.find(User.class, username);
- if (user == null) {
- LOG.error("Organization user with id '{}' not found in DB", username);
- throw new SecurityException("Organization's user not found with ID: " + username);
- }
- users.add(user);
- }
- }
+ private void setOrgUsers(Organization org, Set<String> usersIds, EntityManager em) throws SeCurisException {
+ Set<User> users = null;
+ if (usersIds != null && !usersIds.isEmpty()) {
+ users = new HashSet<>();
+ for (String username : usersIds) {
+ User user = em.find(User.class, username);
+ if (user == null) {
+ LOG.error("Organization user with id '{}' not found in DB", username);
+ throw new SecurityException("Organization's user not found with ID: " + username);
+ }
+ users.add(user);
+ }
+ }
- org.setUsers(users);
- }
+ org.setUsers(users);
+ }
- @PUT
- @POST
- @Path("/{orgid}")
- @Consumes(MediaType.APPLICATION_JSON)
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @EnsureTransaction
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
- LOG.info("Modifying organization with id: {}", orgid);
- // EntityManager em = emProvider.get();
- Organization currentOrg = em.find(Organization.class, Integer.parseInt(orgid));
- if (currentOrg == null) {
- LOG.error("Organization with id {} not found in DB", orgid);
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization not found with ID: " + orgid)
- .build();
- }
- try {
- this.setParentOrg(currentOrg, org.getParentOrgId(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
- if (org.getParentOrganization() != null && (isCyclicalRelationship(currentOrg.getId(), org.getParentOrganization()))) {
- LOG.error("Organization parent generate a cyclical relationship, parent id {}, current id: {}", org.getParentOrgId(), currentOrg.getId());
- return Response
- .status(Status.FORBIDDEN)
- .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
- "Cyclical relationships are not allowed, please change the parent organization, current Parent: "
- + org.getParentOrganization().getName()).build();
- }
+ @PUT
+ @POST
+ @Path("/{orgid}")
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Produces({ MediaType.APPLICATION_JSON })
+ @EnsureTransaction
+ @Securable(roles = Rol.ADMIN)
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ public Response modify(Organization org, @PathParam("orgid") String orgid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
+ LOG.info("Modifying organization with id: {}", orgid);
+ // EntityManager em = emProvider.get();
+ Organization currentOrg = em.find(Organization.class, Integer.parseInt(orgid));
+ if (currentOrg == null) {
+ LOG.error("Organization with id {} not found in DB", orgid);
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization not found with ID: " + orgid).build();
+ }
+ try {
+ this.setParentOrg(currentOrg, org.getParentOrgId(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
+ if (org.getParentOrganization() != null && (isCyclicalRelationship(currentOrg.getId(), org.getParentOrganization()))) {
+ LOG.error("Organization parent generate a cyclical relationship, parent id {}, current id: {}", org.getParentOrgId(), currentOrg.getId());
+ return Response.status(Status.FORBIDDEN).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER,
+ "Cyclical relationships are not allowed, please change the parent organization, current Parent: " + org.getParentOrganization().getName()).build();
+ }
- try {
- setOrgUsers(currentOrg, org.getUsersIds(), em);
- } catch (SeCurisException e) {
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
- }
+ try {
+ setOrgUsers(currentOrg, org.getUsersIds(), em);
+ } catch (SeCurisException e) {
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, e.getMessage()).build();
+ }
- currentOrg.setCode(org.getCode());
- currentOrg.setName(org.getName());
- currentOrg.setDescription(org.getDescription());
- em.persist(currentOrg);
+ currentOrg.setCode(org.getCode());
+ currentOrg.setName(org.getName());
+ currentOrg.setDescription(org.getDescription());
+ em.persist(currentOrg);
- return Response.ok(currentOrg).build();
- }
+ return Response.ok(currentOrg).build();
+ }
- @DELETE
- @Path("/{orgid}")
- @EnsureTransaction
- @Produces({
- MediaType.APPLICATION_JSON
- })
- @Securable
- @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
- public Response delete(@PathParam("orgid") String orgid, @Context HttpServletRequest request) {
- LOG.info("Deleting organization with id: {}", orgid);
- // EntityManager em = emProvider.get();
- Organization org = em.find(Organization.class, Integer.parseInt(orgid));
- if (org == null) {
- LOG.error("Organization with id {} can not be deleted, It was not found in DB", orgid);
- return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization was not found, ID: " + orgid)
- .build();
- }
- if (org.getChildOrganizations() != null && !org.getChildOrganizations().isEmpty()) {
- LOG.error("Organization has children and can not be deleted, ID: " + orgid);
- return Response.status(Status.FORBIDDEN)
- .header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization has children and can not be deleted, ID: " + orgid).build();
- }
+ @DELETE
+ @Path("/{orgid}")
+ @EnsureTransaction
+ @Produces({ MediaType.APPLICATION_JSON })
+ @Securable(roles = Rol.ADMIN)
+ @RolesAllowed(BasicSecurityContext.ROL_ADMIN)
+ public Response delete(@PathParam("orgid") String orgid, @Context HttpServletRequest request) {
+ LOG.info("Deleting organization with id: {}", orgid);
+ // EntityManager em = emProvider.get();
+ Organization org = em.find(Organization.class, Integer.parseInt(orgid));
+ if (org == null) {
+ LOG.error("Organization with id {} can not be deleted, It was not found in DB", orgid);
+ return Response.status(Status.NOT_FOUND).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization was not found, ID: " + orgid).build();
+ }
+ if (org.getChildOrganizations() != null && !org.getChildOrganizations().isEmpty()) {
+ LOG.error("Organization has children and can not be deleted, ID: " + orgid);
+ return Response.status(Status.FORBIDDEN).header(DefaultExceptionHandler.ERROR_MESSAGE_HEADER, "Organization has children and can not be deleted, ID: " + orgid).build();
+ }
- em.remove(org);
- return Response.ok(Utils.createMap("success", true, "id", orgid)).build();
- }
+ em.remove(org);
+ return Response.ok(Utils.createMap("success", true, "id", orgid)).build();
+ }
}
diff --git a/securis/src/main/java/net/curisit/securis/services/PackResource.java b/securis/src/main/java/net/curisit/securis/services/PackResource.java
index 07bfdfa..6c4db5a 100644
--- a/securis/src/main/java/net/curisit/securis/services/PackResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/PackResource.java
@@ -38,6 +38,7 @@
import net.curisit.securis.db.PackMetadata;
import net.curisit.securis.db.PackStatus;
import net.curisit.securis.db.User;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -90,12 +91,15 @@
LOG.info("Getting all packs for user: " + bsc.getUserPrincipal());
q = em.createNamedQuery("list-packs", Pack.class);
} else {
- if (bsc.getOrganizationsIds() == null || bsc.getOrganizationsIds().isEmpty() || //
- bsc.getApplicationsIds() == null || bsc.getApplicationsIds().isEmpty()) {
+ if (bsc.getApplicationsIds() == null || bsc.getApplicationsIds().isEmpty()) {
return Response.ok().build();
}
- q = em.createNamedQuery("list-packs-by-orgs-apps", Pack.class);
- q.setParameter("list_ids_org", bsc.getOrganizationsIds());
+ if (bsc.getOrganizationsIds() == null || bsc.getOrganizationsIds().isEmpty()) {
+ q = em.createNamedQuery("list-packs-by-apps", Pack.class);
+ } else {
+ q = em.createNamedQuery("list-packs-by-orgs-apps", Pack.class);
+ q.setParameter("list_ids_org", bsc.getOrganizationsIds());
+ }
q.setParameter("list_ids_app", bsc.getApplicationsIds());
LOG.info("Getting packs from orgs: {} and apps: {}", bsc.getOrganizationsIds(), bsc.getApplicationsIds());
}
@@ -140,7 +144,7 @@
@POST
@Path("/")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -207,7 +211,7 @@
*/
@GET
@Path("/{packId}/next_license_code")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@Produces({ MediaType.TEXT_PLAIN })
public Response getCodeSuffix(@PathParam("packId") Integer packId, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
// EntityManager em = emProvider.get();
@@ -249,7 +253,7 @@
@POST
@Path("/{packId}")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -314,7 +318,7 @@
@POST
@Path("/{packId}/activate")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -338,7 +342,7 @@
@POST
@Path("/{packId}/putonhold")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -362,7 +366,7 @@
@POST
@Path("/{packId}/cancel")
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@@ -403,7 +407,7 @@
@DELETE
@Path("/{packId}")
- @Securable
+ @Securable(roles = Rol.ADMIN | Rol.ADVANCE)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
@EnsureTransaction
@Produces({ MediaType.APPLICATION_JSON })
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 a4789d4..fbffffa 100644
--- a/securis/src/main/java/net/curisit/securis/services/UserResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/UserResource.java
@@ -37,6 +37,7 @@
import net.curisit.securis.db.Application;
import net.curisit.securis.db.Organization;
import net.curisit.securis.db.User;
+import net.curisit.securis.db.User.Rol;
import net.curisit.securis.ioc.EnsureTransaction;
import net.curisit.securis.security.BasicSecurityContext;
import net.curisit.securis.security.Securable;
@@ -120,7 +121,7 @@
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
@EnsureTransaction
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response create(User user, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Creating new user");
@@ -196,7 +197,7 @@
@EnsureTransaction
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response modify(User user, @PathParam("uid") String uid, @HeaderParam(TokenHelper.TOKEN_HEADER_PÀRAM) String token) {
LOG.info("Modifying user with id: {}", uid);
@@ -241,7 +242,7 @@
@Path("/{uid}")
@EnsureTransaction
@Produces({ MediaType.APPLICATION_JSON })
- @Securable
+ @Securable(roles = Rol.ADMIN)
@RolesAllowed(BasicSecurityContext.ROL_ADMIN)
public Response delete(@PathParam("uid") String uid, @Context HttpServletRequest request) {
LOG.info("Deleting app with id: {}", uid);
diff --git a/securis/src/main/webapp/bs-config.js b/securis/src/main/webapp/bs-config.js
new file mode 100644
index 0000000..8e40a96
--- /dev/null
+++ b/securis/src/main/webapp/bs-config.js
@@ -0,0 +1,33 @@
+
+var gz_urls = /\.gz$/
+
+middleware = function(req, res, next) {
+ if ('GET' != req.method && 'HEAD' != req.method) {
+ return next();
+ }
+ if (gz_urls.test(req.url)) {
+ console.log('GZIP detected for url: ' + req.url);
+ res.setHeader('Content-Encoding', 'gzip');
+ }
+ return next();
+}
+
+
+console.log(middleware);
+
+module.exports = function(bs) {
+ return {
+ "server": {
+ "baseDir": "",
+ "routes": {
+ "/node_modules": "node_modules",
+ "/assets": "assets"
+ }
+ },
+ middleware: [
+ middleware
+ ]
+
+
+ }
+}
\ No newline at end of file
diff --git a/securis/src/main/webapp/bs-config.json b/securis/src/main/webapp/bs-config.json
deleted file mode 100644
index f04b023..0000000
--- a/securis/src/main/webapp/bs-config.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "server": {
- "baseDir": "",
- "routes": {
- "/node_modules": "node_modules",
- "/assets": "assets"
- }
- }
-}
diff --git a/securis/src/main/webapp/index.html b/securis/src/main/webapp/index.html
index de1fb05..df3d13c 100644
--- a/securis/src/main/webapp/index.html
+++ b/securis/src/main/webapp/index.html
@@ -19,13 +19,12 @@
-->
<script src="jspm_packages/system.js"></script>
-
+ <!-- <script src="main-bundle.js.gz"></script> -->
<script src="jspm.browser.js"></script>
- <script src="jspm.config.js"></script>
- <!-- <script src="systemjs.config.js"></script> -->
+ <script src="jspm.config.js"></script>
<script>
- System.import('main').catch(function(err){ console.error(err); });
+ System.import('src/main.js').catch(function(err){ console.error(err); });
</script>
<!-- Load the Covalent platform stylesheet -->
@@ -43,7 +42,7 @@
<app-home>
<div style="padding: 20%;text-align:center;">
<img src="assets/securis_logo.svg" width="100">
- <div style="font-size: 0.8em;color: darkgrey;">SeCuris Loading2...</div>
+ <div style="font-size: 0.8em;color: darkgrey;">SeCuris Loading...</div>
</div>
</app-home>
</body>
diff --git a/securis/src/main/webapp/jspm.browser.js b/securis/src/main/webapp/jspm.browser.js
index a2e5e09..3b9e882 100644
--- a/securis/src/main/webapp/jspm.browser.js
+++ b/securis/src/main/webapp/jspm.browser.js
@@ -1,7 +1,6 @@
SystemJS.config({
- paths: {
- "github:": "./jspm_packages/github/",
- "npm:": "./jspm_packages/npm/",
- "securis/": "./src/"
- }
+ "paths": {
+ "github:": "jspm_packages/github/",
+ "npm:": "jspm_packages/npm/"
+ }
});
diff --git a/securis/src/main/webapp/jspm.config.js b/securis/src/main/webapp/jspm.config.js
index 059029b..ae27d42 100644
--- a/securis/src/main/webapp/jspm.config.js
+++ b/securis/src/main/webapp/jspm.config.js
@@ -2,8 +2,7 @@
nodeConfig: {
"paths": {
"github:": "jspm_packages/github/",
- "npm:": "jspm_packages/npm/",
- "app/": "src/app/"
+ "npm:": "jspm_packages/npm/"
}
},
devConfig: {
@@ -27,23 +26,19 @@
}
}
},
+ transpiler: false,
packages: {
- 'environments': {
- defaultExtension: 'js'
+ "environments": {
+ "defaultExtension": "js"
},
- 'app': {
- defaultExtension: 'js'
- },
- 'main': {
- main: 'main.js',
- defaultExtension: 'js'
+ "src": {
+ "defaultExtension": "js"
}
},
map: {
"@angular/animations/browser": "npm:@angular/animations@4.0.2/bundles/animations-browser.umd.min.js",
"@angular/platform-browser/animations": "npm:@angular/platform-browser@4.0.2/bundles/platform-browser-animations.umd.min.js",
- 'main': 'src',
- 'app': 'src/app'
+ "app": "src/app"
}
});
@@ -334,4 +329,5 @@
}
}
}
+
});
diff --git a/securis/src/main/webapp/package.json b/securis/src/main/webapp/package.json
index fe09b41..56f93a3 100644
--- a/securis/src/main/webapp/package.json
+++ b/securis/src/main/webapp/package.json
@@ -6,7 +6,7 @@
"build": "tsc -p src/",
"build:watch": "tsc -p src/ -w",
"build:e2e": "tsc -p e2e/",
- "serve": "lite-server -c=bs-config.json",
+ "serve": "lite-server -c=bs-config.js",
"serve:e2e": "lite-server -c=bs-config.e2e.json",
"prestart": "npm run build",
"start": "concurrently \"npm run build:watch\" \"npm run serve\"",
diff --git a/securis/src/main/webapp/src/app/forms/user.form.component.ts b/securis/src/main/webapp/src/app/forms/user.form.component.ts
index bdf543b..d807008 100644
--- a/securis/src/main/webapp/src/app/forms/user.form.component.ts
+++ b/securis/src/main/webapp/src/app/forms/user.form.component.ts
@@ -23,6 +23,12 @@
organizations_ids: [ 1, 2, 5, 6, 7, 8 ]
}
+const ROL = {
+ ADVANCE: 1,
+ ADMIN: 2,
+ BASIC: 4
+}
+
@Component({
selector: 'user-form',
templateUrl: 'src/app/forms/user.form.html'
@@ -32,7 +38,9 @@
allApplications: IComboOption[];
orgNames: string[] = [];
appNames: string[] = [];
- allRoles: any[] = [{"id":4, "code": "basic","label":"Basic"}, {"id":1, "code": "advance", "label":"Advance"}, {"id":2, "code": "admin","label":"Admin"}];
+ allRoles: any[] = [{"id":ROL.BASIC, "code": "basic","label":"Basic"},
+ {"id":ROL.ADVANCE, "code": "advance", "label":"Advance"},
+ {"id":ROL.ADMIN, "code": "admin","label":"Admin"}];
user_orgs: string[] = [];
user_apps: string[] = [];
user_roles: any = {};
@@ -59,8 +67,9 @@
var selectedApp = this.allApplications.find(app => app.label === appName);
this.data.applications_ids.push(selectedApp.id);
});
- this.user_roles.advance && this.data.roles.push(1);
- this.user_roles.admin && this.data.roles.push(2);
+ this.user_roles.basic && this.data.roles.push(ROL.BASIC);
+ this.user_roles.advance && this.data.roles.push(ROL.ADVANCE);
+ this.user_roles.admin && this.data.roles.push(ROL.ADMIN);
super.save('username');
}
diff --git a/securis/src/main/webapp/src/app/forms/user.form.html b/securis/src/main/webapp/src/app/forms/user.form.html
index 11ecf99..bdb1800 100644
--- a/securis/src/main/webapp/src/app/forms/user.form.html
+++ b/securis/src/main/webapp/src/app/forms/user.form.html
@@ -72,6 +72,9 @@
[items]="orgNames" [(ngModel)]="user_orgs" name="user_orgs" requireMatch>
</td-chips>
<div layout="column" layout-fill flex="25">
+ <md-checkbox [(ngModel)]="user_roles.basic" name="basic_role" [mdTooltip]="$L.get('Role {}', 'basic')">
+ <span i18n>Basic</span>
+ </md-checkbox>
<md-checkbox [(ngModel)]="user_roles.advance" name="advance_role" [mdTooltip]="$L.get('Role {}', 'advance')">
<span i18n>Advance</span>
</md-checkbox>
diff --git a/securis/src/main/webapp/src/main.ts b/securis/src/main/webapp/src/main.ts
index f810f9d..d635a66 100644
--- a/securis/src/main/webapp/src/main.ts
+++ b/securis/src/main/webapp/src/main.ts
@@ -9,5 +9,5 @@
if (environment.production) {
enableProdMode();
}
-
+// console.log('This is a test.')
platformBrowserDynamic().bootstrapModule(AppModule);
--
Gitblit v1.3.2