From 523edc2956a42bda7d33884fcbbb6018addda4b0 Mon Sep 17 00:00:00 2001
From: rsanchez <rsanchez@curisit.net>
Date: Tue, 18 Apr 2017 17:07:34 +0000
Subject: [PATCH] #3582 feature - Changed API to take in account pack data, (valid end date, status, ...) and some minor fixes

---
 securis/src/main/java/net/curisit/securis/services/ApiResource.java |   21 +++++++++++++++++++--
 1 files changed, 19 insertions(+), 2 deletions(-)

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 5211a5e..4e1812b 100644
--- a/securis/src/main/java/net/curisit/securis/services/ApiResource.java
+++ b/securis/src/main/java/net/curisit/securis/services/ApiResource.java
@@ -34,6 +34,7 @@
 import net.curisit.securis.db.LicenseHistory;
 import net.curisit.securis.db.LicenseStatus;
 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;
@@ -197,7 +198,9 @@
 
 	/**
 	 * License validation on server side, in this case we validate that the
-	 * current licenses has not been cancelled.
+	 * current licenses has not been cancelled and they are still in valid
+	 * period. If the pack has reached the end valid period, the license is no
+	 * longer valid.
 	 * 
 	 * @param currentLic
 	 * @param bsc
@@ -219,12 +222,22 @@
 			throw new SeCurisServiceException(ErrorCodes.LICENSE_IS_EXPIRED, "The license is expired");
 		}
 
+		License existingLic = licenseHelper.getActiveLicenseFromDB(currentLic, em);
+
+		Pack pack = existingLic.getPack();
+		if (pack.getEndValidDate().before(new Date())) {
+			throw new SeCurisServiceException(ErrorCodes.LICENSE_PACK_IS_NOT_VALID, "The pack end valid date has been reached");
+		}
+		if (pack.getStatus() != PackStatus.ACTIVE) {
+			LOG.error("The Pack {} status is not active, is: {}", pack.getCode(), pack.getStatus());
+			throw new SeCurisServiceException(ErrorCodes.LICENSE_PACK_IS_NOT_VALID, "The pack status is not Active");
+		}
+
 		try {
 			SignatureHelper.getInstance().validateSignature(currentLic);
 		} catch (SeCurisException ex) {
 			throw new SeCurisServiceException(ErrorCodes.LICENSE_DATA_IS_NOT_VALID, "The license signature is not valid");
 		}
-		licenseHelper.assertLicenseStatusIsActive(currentLic, em);
 
 		return Response.ok(currentLic).build();
 	}
@@ -353,6 +366,10 @@
 		} else {
 			pack = lic.getPack();
 		}
+		if (pack.getStatus() != PackStatus.ACTIVE) {
+			LOG.error("The Pack {} status is not active, is: {}", pack.getCode(), pack.getStatus());
+			throw new SeCurisServiceException(ErrorCodes.LICENSE_DATA_IS_NOT_VALID, "The pack status is not Active");
+		}
 		SignedLicenseBean signedLicense;
 		try {
 			String licCode;

--
Gitblit v1.3.2