]> WPIA git - gigi.git/commitdiff
Adding new fields to organisation account
authorINOPIAE <m.maengel@inopiae.de>
Thu, 16 Jun 2016 14:06:01 +0000 (16:06 +0200)
committerFelix Dörre <felix@dogcraft.de>
Thu, 30 Jun 2016 07:16:26 +0000 (09:16 +0200)
split update function into update certificate data which need to start
the revoking of certificates and the update organisation data

Change-Id: I813dc3a285d721ef19894e58843b0bd0bac7a565

src/org/cacert/gigi/dbObjects/Organisation.java
src/org/cacert/gigi/pages/orga/CreateOrgForm.java
src/org/cacert/gigi/pages/orga/CreateOrgForm.templ
src/org/cacert/gigi/pages/orga/ViewOrgPage.java
tests/org/cacert/gigi/TestOrga.java
tests/org/cacert/gigi/api/ImportCATSResult.java
tests/org/cacert/gigi/api/IssueCert.java
tests/org/cacert/gigi/pages/orga/TestOrgDomain.java
tests/org/cacert/gigi/pages/orga/TestOrgaManagement.java

index 36119424e3fe9ff41cb7bcbd0207723f08b36086..101c973ef3fa3fdebea65d402b32b5a85292b40d 100644 (file)
@@ -56,7 +56,11 @@ public class Organisation extends CertificateOwner {
 
     private String email;
 
-    public Organisation(String name, String state, String province, String city, String email, User creator) throws GigiApiException {
+    private String optionalName;
+
+    private String postalAddress;
+
+    public Organisation(String name, String state, String province, String city, String email, String optionalName, String postalAddress, User creator) throws GigiApiException {
         if ( !creator.isInGroup(Group.ORGASSURER)) {
             throw new GigiApiException("Only org-assurers may create organisations.");
         }
@@ -65,15 +69,19 @@ public class Organisation extends CertificateOwner {
         this.province = province;
         this.city = city;
         this.email = email;
+        this.optionalName = optionalName;
+        this.postalAddress = postalAddress;
         int id = getId();
-        try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, creator=?")) {
+        try (GigiPreparedStatement ps = new GigiPreparedStatement("INSERT INTO organisations SET id=?, name=?, state=?, province=?, city=?, contactEmail=?, optional_name=?, postal_address=?, creator=?")) {
             ps.setInt(1, id);
             ps.setString(2, name);
             ps.setString(3, state);
             ps.setString(4, province);
             ps.setString(5, city);
             ps.setString(6, email);
-            ps.setInt(7, creator.getId());
+            ps.setString(7, optionalName);
+            ps.setString(8, postalAddress);
+            ps.setInt(9, creator.getId());
             synchronized (Organisation.class) {
                 ps.execute();
             }
@@ -87,6 +95,8 @@ public class Organisation extends CertificateOwner {
         province = rs.getString("province");
         city = rs.getString("city");
         email = rs.getString("contactEmail");
+        optionalName = rs.getString("optional_name");
+        postalAddress = rs.getString("postal_address");
     }
 
     public String getName() {
@@ -109,6 +119,14 @@ public class Organisation extends CertificateOwner {
         return email;
     }
 
+    public String getOptionalName() {
+        return optionalName;
+    }
+
+    public String getPostalAddress() {
+        return postalAddress;
+    }
+
     public static synchronized Organisation getById(int id) {
         CertificateOwner co = CertificateOwner.getById(id);
         if (co instanceof Organisation) {
@@ -183,28 +201,39 @@ public class Organisation extends CertificateOwner {
         }
     }
 
-    public void update(String o, String c, String st, String l, String mail) {
+    public void updateCertData(String o, String c, String st, String l) {
         for (Certificate cert : getCertificates(false)) {
             if (cert.getStatus() == CertificateStatus.ISSUED) {
                 cert.revoke();
             }
         }
-        try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `name`=?, `state`=?, `province`=?, `city`=?, `contactEmail`=? WHERE `id`=?")) {
+        try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `name`=?, `state`=?, `province`=?, `city`=? WHERE `id`=?")) {
             ps.setString(1, o);
             ps.setString(2, c);
             ps.setString(3, st);
             ps.setString(4, l);
-            ps.setString(5, mail);
-            ps.setInt(6, getId());
+            ps.setInt(5, getId());
             ps.executeUpdate();
         }
-        email = mail;
         name = o;
         state = c;
         province = st;
         city = l;
     }
 
+    public void updateOrgData(String mail, String o_name, String p_address) {
+        try (GigiPreparedStatement ps = new GigiPreparedStatement("UPDATE `organisations` SET `contactEmail`=?, `optional_name`=?, `postal_address`=? WHERE `id`=?")) {
+            ps.setString(1, mail);
+            ps.setString(2, o_name);
+            ps.setString(3, p_address);
+            ps.setInt(4, getId());
+            ps.executeUpdate();
+        }
+        email = mail;
+        optionalName = o_name;
+        postalAddress = p_address;
+    }
+
     public boolean isMaster(User u) {
         for (Affiliation i : getAllAdmins()) {
             if (i.isMaster() && i.getTarget() == u) {
index 32a9ceb7033ebba4a602f729372714ab8c13d813..5e6b35a2a99989e49be3d1a5eebad307a0a31884 100644 (file)
@@ -28,6 +28,10 @@ public class CreateOrgForm extends Form {
 
     private String email = "";
 
+    private String optionalName = "";
+
+    private String postalAddress = "";
+
     private boolean isEdit = false;
 
     public CreateOrgForm(HttpServletRequest hsr) {
@@ -43,22 +47,54 @@ public class CreateOrgForm extends Form {
         st = t.getProvince();
         l = t.getCity();
         email = t.getContactEmail();
+        optionalName = t.getOptionalName();
+        postalAddress = t.getPostalAddress();
     }
 
     @Override
     public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+        String action = req.getParameter("action");
+        if (action == null) {
+            return false;
+        }
+        if (action.equals("new")) {
+            o = req.getParameter("O");
+            c = req.getParameter("C");
+            st = req.getParameter("ST");
+            l = req.getParameter("L");
+            email = req.getParameter("contact");
+            optionalName = req.getParameter("optionalName");
+            postalAddress = req.getParameter("postalAddress");
+
+            Organisation ne = new Organisation(o, c, st, l, email, optionalName, postalAddress, LoginPage.getUser(req));
+            result = ne;
+            return true;
+        } else if (action.equals("updateOrganisationData")) {
+            updateOrganisationData(out, req);
+            return true;
+        } else if (action.equals("updateCertificateData")) {
+            updateCertificateData(out, req);
+            return true;
+        }
+
+        return false;
+    }
+
+    private void updateOrganisationData(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+        email = req.getParameter("contact");
+        optionalName = req.getParameter("optionalName");
+        postalAddress = req.getParameter("postalAddress");
+
+        result.updateOrgData(email, optionalName, postalAddress);
+    }
+
+    private void updateCertificateData(PrintWriter out, HttpServletRequest req) throws GigiApiException {
         o = req.getParameter("O");
         c = req.getParameter("C");
         st = req.getParameter("ST");
         l = req.getParameter("L");
-        email = req.getParameter("contact");
-        if (result != null) {
-            result.update(o, c, st, l, email);
-            return true;
-        }
-        Organisation ne = new Organisation(o, c, st, l, email, LoginPage.getUser(req));
-        result = ne;
-        return true;
+
+        result.updateCertData(o, c, st, l);
     }
 
     public Organisation getResult() {
@@ -72,6 +108,8 @@ public class CreateOrgForm extends Form {
         vars.put("ST", st);
         vars.put("L", this.l);
         vars.put("email", email);
+        vars.put("optionalName", optionalName);
+        vars.put("postalAddress", postalAddress);
         if (isEdit) {
             vars.put("edit", true);
         }
index b858a62338f46cfdb9b46a071f3643e78d8d7363..b050f23dadf0aa1635914b3d76804101b6701d46 100644 (file)
@@ -8,12 +8,13 @@
     <? } ?></th>
   </tr>
   <tr>
-    <td><?=_Organisation Name?>:</td>
-    <td><input class="form-control" type="text" name="O" value="<?=$O?>" maxlength="64" size="90"></td>
+    <th colspan="2"><?=_Certificate data, all fields need to be filled?></th>
   </tr>
   <tr>
-    <td><?=_Contact Email?>:</td>
-    <td><input class="form-control" type="text" name="contact" value="<?=$email?>" maxlength="255" size="90"></td>
+    <td><?=_Organisation Name?>:</td>
+    <td><input class="form-control" type="text" name="O" value="<?=$O?>" maxlength="64" size="90">
+        <?=_(max. 64 characters)?>
+    </td>
   </tr>
   <tr>
     <td><?=_Town/Suburb?>:</td>
   <tr>
     <td><?=_Country?>:</td>
     <td><input class="form-control" type="text" name="C" value="<?=$C?>" maxlength="2" size="5">
-        <?=_(2 letter !'<a href="http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm">'ISO code!'</a>')?>
+      <?=_(2 letter !'<a href="http://www.iso.org/iso/home/standards/country_codes/iso-3166-1_decoding_table.htm">'ISO code!'</a>')?>
     </td>
   </tr>
+  <? if($edit) { ?>
+  <tr>
+    <td></td>
+    <td><?=_WARNING: updating the data will revoke all issued certificates.?></td>
+  </tr>
+  <tr>
+    <td colspan="2"><button type="submit" name="action" value="updateCertificateData" class="btn btn-primary"><?=_Update certificate data?></button></td>
+  </tr>
+  <? } ?>
+  <tr>
+    <th colspan="2"><?=_Organisation data?></th>
+  </tr>
+  <tr>
+    <td><?=_Organisation name?>:</td>
+    <td><input class="form-control" type="text" name="optionalName" value="<?=$optionalName?>" maxlength="255" size="90">
+      <?=_Optional: full organisation name (if organisation name is longer than 64 characters)?>
+    </td>
+  </tr>
+    <tr>
+    <td><?=_Postal address?>:</td>
+    <td><textarea class="form-control" name="postalAddress" cols="60" rows="5"><?=$postalAddress?></textarea></td>
+  </tr>
+  <tr>
+    <td><?=_Contact Email?>:</td>
+    <td><input class="form-control" type="text" name="contact" value="<?=$email?>" maxlength="255" size="90"></td>
+  </tr>
   <tr>
     <td><?=_Comments?>:</td>
     <td><textarea class="form-control" name="comments" cols="60" rows="10"></textarea></td>
   </tr>
   <? if($edit) { ?>
   <tr>
-    <td></td>
-    <td><?=_WARNING: updating the data will revoke all issued certificates.?></td>
+    <td colspan="2"><button type="submit" name="action" value="updateOrganisationData" class="btn btn-primary"><?=_Update organisation data?></button></td>
   </tr>
-  <? } ?>
+  <? } else {?>
   <tr>
-    <td colspan="2"><input type="submit" value="<?=_Submit?>"></td>
+    <td colspan="2"><button type="submit" name="action" value="new" class="btn btn-primary"><?=_Submit?></button></td>
   </tr>
+  <? } ?>
 </table>
index c8259412ae4dca1452d0b33189079ce859203d5b..49833e572b55a00baf600d3fa8cd130128905f47 100644 (file)
@@ -65,7 +65,10 @@ public class ViewOrgPage extends Page {
                         resp.sendRedirect(DEFAULT_PATH + "/" + form.getTarget().getId());
                     }
                 } else {
-                    Form.getForm(req, CreateOrgForm.class).submit(resp.getWriter(), req);
+                    CreateOrgForm form = Form.getForm(req, CreateOrgForm.class);
+                    if (form.submit(resp.getWriter(), req)) {
+                        resp.sendRedirect(DEFAULT_PATH + "/" + form.getResult().getId());
+                    }
                 }
             }
 
index bf4f9def46409b0ac1aef1e94d18b7318d82c38f..91afa2e76b5fb34c969c3f189da4847b66fda711 100644 (file)
@@ -22,7 +22,7 @@ public class TestOrga extends ManagedTest {
         u3.grantGroup(u1, Group.ORGASSURER);
         User u4 = User.getById(createAssuranceUser("fn", "ln", createUniqueName() + "@email.org", TEST_PASSWORD));
         u4.grantGroup(u1, Group.ORGASSURER);
-        Organisation o1 = new Organisation("name", "ST", "prov", "city", "email", u1);
+        Organisation o1 = new Organisation("name", "ST", "prov", "city", "email", "optional name", "postal address", u1);
         assertEquals(0, o1.getAllAdmins().size());
         o1.addAdmin(u2, u1, false);
         assertEquals(1, o1.getAllAdmins().size());
index 4a90500dc6dc722fe448168e512d0fe56d55d356..db19380dd6472b82f884fb3a3e800ff5cc0d1223 100644 (file)
@@ -42,7 +42,7 @@ public class ImportCATSResult extends ClientTest {
         grant(u.getEmail(), Group.ORGASSURER);
         clearCaches();
         u = User.getById(u.getId());
-        Organisation o = new Organisation(Organisation.SELF_ORG_NAME, "NA", "NA", "NA", "contact@cacert.org", u);
+        Organisation o = new Organisation(Organisation.SELF_ORG_NAME, "NA", "NA", "NA", "contact@cacert.org", "", "", u);
         assertTrue(o.isSelfOrganisation());
         KeyPair kp = generateKeypair();
         String key1 = generatePEMCSR(kp, "EMAIL=cats@cacert.org");
index b37626ce24a30d1285d06e83fe1ae630d3046d7a..ca4b9036569364e9ad8039caebbc3e6e8142e9cc 100644 (file)
@@ -88,7 +88,7 @@ public class IssueCert extends ClientTest {
         makeAssurer(id);
         u.grantGroup(u, Group.ORGASSURER);
 
-        Organisation o1 = new Organisation("name", "st", "pr", "st", "test@mail", u);
+        Organisation o1 = new Organisation("name", "st", "pr", "st", "test@mail", "", "", u);
         o1.addAdmin(u, u, false);
         String testdom = createUniqueName() + "-example.com";
         Domain d2 = new Domain(u, o1, testdom);
index 15eec419f14bf3b2c3fda373d15fed23d659eef2..806ec964318c017bc23276be78eff395faf610be 100644 (file)
@@ -77,7 +77,7 @@ public class TestOrgDomain extends ClientTest {
     }
 
     private Organisation createUniqueOrg() throws GigiApiException {
-        Organisation o1 = new Organisation(createUniqueName(), "st", "pr", "city", "test@example.com", u);
+        Organisation o1 = new Organisation(createUniqueName(), "st", "pr", "city", "test@example.com", "", "", u);
         return o1;
     }
 
index 6fe4f1828d57d79b771d3ac2d6b414e0feff00ab..7800d02fba486e6702a55626e65568724be2e0a5 100644 (file)
@@ -40,7 +40,7 @@ public class TestOrgaManagement extends ClientTest {
         for (Organisation i : Organisation.getOrganisations(0, 30)) {
             i.delete();
         }
-        executeBasicWebInteraction(cookie, CreateOrgPage.DEFAULT_PATH, "O=name&contact=mail&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
+        executeBasicWebInteraction(cookie, CreateOrgPage.DEFAULT_PATH, "action=new&O=name&contact=mail&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
         Organisation[] orgs = Organisation.getOrganisations(0, 30);
         assertEquals(1, orgs.length);
         assertEquals("mail", orgs[0].getContactEmail());
@@ -72,7 +72,7 @@ public class TestOrgaManagement extends ClientTest {
         executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "del=" + URLEncoder.encode(u2.getEmail(), "UTF-8") + "&email=&do_affiliate=y", 1);
         assertEquals(0, orgs[0].getAllAdmins().size());
 
-        executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "O=name1&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
+        executeBasicWebInteraction(cookie, ViewOrgPage.DEFAULT_PATH + "/" + orgs[0].getId(), "action=updateCertificateData&O=name1&contact=&L=K%C3%B6ln&ST=%C3%9C%C3%96%C3%84%C3%9F&C=DE&comments=jkl%C3%B6loiuzfdfgjlh%C3%B6", 0);
         clearCaches();
         orgs = Organisation.getOrganisations(0, 30);
         assertEquals("name1", orgs[0].getName());
@@ -81,8 +81,8 @@ public class TestOrgaManagement extends ClientTest {
     @Test
     public void testNonAssurerSeeOnlyOwn() throws IOException, GigiApiException {
         User u2 = User.getById(createAssuranceUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
-        Organisation o1 = new Organisation("name21", "DE", "sder", "Rostov", "email", u);
-        Organisation o2 = new Organisation("name12", "DE", "sder", "Rostov", "email", u);
+        Organisation o1 = new Organisation("name21", "DE", "sder", "Rostov", "email", "", "", u);
+        Organisation o2 = new Organisation("name12", "DE", "sder", "Rostov", "email", "", "", u);
         o1.addAdmin(u2, u, false);
         String session2 = login(u2.getEmail(), TEST_PASSWORD);
 
@@ -115,7 +115,7 @@ public class TestOrgaManagement extends ClientTest {
         User u2 = User.getById(createAssuranceUser("testworker", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
         User u3 = User.getById(createAssuranceUser("testmaster", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
         User u4_dummy = User.getById(createVerifiedUser("testmaster", "testname", createUniqueName() + "@testdom.com", TEST_PASSWORD));
-        Organisation o1 = new Organisation("name21", "DE", "sder", "Rostov", "email", u);
+        Organisation o1 = new Organisation("name21", "DE", "sder", "Rostov", "email", "", "", u);
         o1.addAdmin(u3, u, true);
         try {
             // must fail because u4 is no assurer