]> WPIA git - gigi.git/commitdiff
add: detect a quiz-admin directly in gigi
authorFelix Dörre <felix@dogcraft.de>
Tue, 3 Jan 2017 10:35:19 +0000 (11:35 +0100)
committerFelix Dörre <felix@dogcraft.de>
Wed, 4 Jan 2017 11:24:05 +0000 (12:24 +0100)
Change-Id: I21854cbafae2a676db624b46975624f31a49d549

src/org/cacert/gigi/api/CATSResolve.java
src/org/cacert/gigi/util/ServerConstants.java
tests/org/cacert/gigi/api/ImportCATSResult.java

index 332885a97f08411df3d50cb3f48843b27767be04..6e7c83dd58aafb035c779f318f288b86e63fd43a 100644 (file)
@@ -7,7 +7,9 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.cacert.gigi.dbObjects.Certificate;
 import org.cacert.gigi.dbObjects.CertificateOwner;
+import org.cacert.gigi.dbObjects.Organisation;
 import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.util.ServerConstants;
 
 public class CATSResolve extends CATSRestrictedApi {
 
@@ -27,6 +29,16 @@ public class CATSResolve extends CATSRestrictedApi {
             return;
         }
         CertificateOwner o = CertificateOwner.getByEnabledSerial(target);
+        if (o instanceof Organisation) {
+            Organisation org = (Organisation) o;
+            if (org.isSelfOrganisation()) {
+                if (hasMail(clientCert, ServerConstants.getQuizAdminMailAddress())) {
+                    resp.setContentType("text/plain; charset=UTF-8");
+                    resp.getWriter().print("admin");
+                    return;
+                }
+            }
+        }
         if ( !(o instanceof User)) {
             resp.sendError(500, "Error, requires valid serial");
             return;
index 0a6b5ae4ce13fa740f5ea8d201bd73d2b8aac25e..73bf9d2ec24ca8a108750052f4f56697f12eb025 100644 (file)
@@ -118,4 +118,8 @@ public class ServerConstants {
         return "quiz@" + ServerConstants.getWwwHostName().replaceFirst("^www\\.", "");
     }
 
+    public static String getQuizAdminMailAddress() {
+        return "quiz-admin@" + ServerConstants.getWwwHostName().replaceFirst("^www\\.", "");
+    }
+
 }
index 6d0ad9940df9008f405b6701a4d217dafd384694..a0caee2b66f2e75e1fa65cd28d4e78174d970023 100644 (file)
@@ -21,6 +21,7 @@ import org.cacert.gigi.dbObjects.Digest;
 import org.cacert.gigi.dbObjects.User;
 import org.cacert.gigi.testUtils.IOUtils;
 import org.cacert.gigi.testUtils.RestrictedApiTest;
+import org.cacert.gigi.util.ServerConstants;
 import org.junit.Test;
 
 public class ImportCATSResult extends RestrictedApiTest {
@@ -32,6 +33,12 @@ public class ImportCATSResult extends RestrictedApiTest {
         target2.setLoginEnabled(true);
 
         assertEquals(u.getId(), Integer.parseInt(apiLookup(target2)));
+
+        Certificate target3 = new Certificate(selfOrg, u, Certificate.buildDN("EMAIL", ServerConstants.getQuizAdminMailAddress()), Digest.SHA256, generatePEMCSR(generateKeypair(), "EMAIL=" + ServerConstants.getQuizAdminMailAddress()), CSRType.CSR, CertificateProfile.getByName("client-orga"), new Certificate.SubjectAlternateName(SANType.EMAIL, ServerConstants.getQuizAdminMailAddress()));
+        await(target3.issue(null, "2y", u));
+        target3.setLoginEnabled(true);
+
+        assertEquals("admin", apiLookup(target3));
     }
 
     @Test