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.");
}
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();
}
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() {
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) {
}
}
- 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) {
private String email = "";
+ private String optionalName = "";
+
+ private String postalAddress = "";
+
private boolean isEdit = false;
public CreateOrgForm(HttpServletRequest hsr) {
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() {
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);
}
<? } ?></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>
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());
+ }
}
}
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());
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");
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);
}
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;
}
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());
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());
@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);
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