From 85e2a65874fcd41771b30ebfff93f86edd4f32b3 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Mon, 01 Dec 2014 14:59:34 +0000
Subject: [PATCH] #396 fix - Added automated license code generation and other minor fixes
---
securis/src/main/java/net/curisit/securis/services/LicenseResource.java | 41 ++++++++++++++++++++++++++++-------------
1 files changed, 28 insertions(+), 13 deletions(-)
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 927122e..d3165b4 100644
--- a/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/LicenseResource.java
@@ -2,7 +2,6 @@
import java.io.File;
import java.io.IOException;
-import java.nio.file.Files;
import java.text.MessageFormat;
import java.util.Date;
import java.util.HashMap;
@@ -55,6 +54,7 @@
import net.curisit.securis.utils.Config;
import net.curisit.securis.utils.EmailManager;
import net.curisit.securis.utils.JsonUtils;
+import net.curisit.securis.utils.LicUtils;
import net.curisit.securis.utils.TokenHelper;
import org.apache.commons.io.IOUtils;
@@ -320,6 +320,23 @@
return Response.ok(lic).build();
}
+ /**
+ * Check if there is some pack with the same code
+ *
+ * @param code
+ * Pack code
+ * @param em
+ * DB session object
+ * @return <code>true</code> if code is already used, <code>false</code>
+ * otherwise
+ */
+ private boolean checkIfCodeExists(String code, EntityManager em) {
+ TypedQuery<License> query = em.createNamedQuery("license-by-code", License.class);
+ query.setParameter("code", code);
+ int lics = query.getResultList().size();
+ return lics > 0;
+ }
+
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
@@ -330,6 +347,14 @@
@Transactional
public Response create(License lic, @Context BasicSecurityContext bsc) throws SeCurisServiceException {
EntityManager em = emProvider.get();
+
+ if (checkIfCodeExists(lic.getCode(), em)) {
+ throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The license code is already used in an existing license");
+ }
+ if (!LicUtils.checkValidLicenseCodeCrc(lic.getCode())) {
+ throw new SeCurisServiceException(ErrorCodes.INVALID_DATA, "The license code is not valid");
+ }
+
Pack pack = null;
if (lic.getPackId() != null) {
pack = em.find(Pack.class, lic.getPackId());
@@ -376,18 +401,16 @@
} else {
lic.setStatus(LicenseStatus.CREATED);
}
+ lic.setCodeSuffix(LicUtils.getLicenseCodeSuffix(lic.getCode()));
lic.setCreatedBy(createdBy);
lic.setCreationTimestamp(new Date());
lic.setModificationTimestamp(lic.getCreationTimestamp());
- LOG.info("LICENSE: {}", lic);
+
em.persist(lic);
- LOG.info("LICENSE on HISTORY create");
em.persist(licenseHelper.createLicenseHistoryAction(lic, createdBy, LicenseHistory.Actions.CREATE));
if (lic.getStatus() == LicenseStatus.ACTIVE) {
- LOG.info("LICENSE ACTIVATION on HISTORY create");
em.persist(licenseHelper.createLicenseHistoryAction(lic, createdBy, LicenseHistory.Actions.CREATE, "Activated on creation"));
}
- LOG.info("LICENSE created oK ??");
return Response.ok(lic).build();
}
@@ -599,14 +622,6 @@
throw new SeCurisServiceException(Status.UNAUTHORIZED.getStatusCode(), "Unathorized access to license data");
}
return lic;
- }
-
- public static void main(String[] args) throws IOException {
- File f = Files.createTempDirectory("securis-server").toFile();
-
- LOG.info("f: {}", f);
- f = new File(f, "config-server.lic");
- LOG.info("f: {}", f);
}
@JsonAutoDetect
--
Gitblit v1.3.2