X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Faccount%2Fcerts%2FCertificateIssueForm.java;h=5712190bcd8f84e66329637fd9644e1e78806abe;hp=6f099195ee1b780c1771ca02a4a283325350daee;hb=dc10b875c132eb7840a6b9827ec93916076d34f7;hpb=8d98e8c550a5fc426d7efbd57436dcb61bd41243 diff --git a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java index 6f099195..5712190b 100644 --- a/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java +++ b/src/org/cacert/gigi/pages/account/certs/CertificateIssueForm.java @@ -4,8 +4,6 @@ import java.io.IOException; import java.io.PrintWriter; import java.security.GeneralSecurityException; import java.util.HashMap; -import java.util.Iterator; -import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -15,14 +13,15 @@ import org.cacert.gigi.dbObjects.Certificate; import org.cacert.gigi.dbObjects.Certificate.SubjectAlternateName; import org.cacert.gigi.dbObjects.CertificateProfile; import org.cacert.gigi.dbObjects.Organisation; -import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; import org.cacert.gigi.output.CertificateValiditySelector; import org.cacert.gigi.output.HashAlgorithms; import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; import org.cacert.gigi.output.template.Template; +import org.cacert.gigi.pages.LoginPage; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.util.AuthorizationContext; import org.cacert.gigi.util.RandomToken; /** @@ -35,7 +34,7 @@ public class CertificateIssueForm extends Form { private final static Template tIni = new Template(CertificateAdd.class.getResource("RequestCertificate.templ")); - private User u; + private AuthorizationContext c; private String spkacChallenge; @@ -43,7 +42,7 @@ public class CertificateIssueForm extends Form { public CertificateIssueForm(HttpServletRequest hsr) { super(hsr); - u = Page.getUser(hsr); + c = LoginPage.getAuthorizationContext(hsr); spkacChallenge = RandomToken.generateToken(16); } @@ -64,10 +63,10 @@ public class CertificateIssueForm extends Form { try { try { if (csr != null) { - cr = new CertificateRequest(u, csr); + cr = new CertificateRequest(c, csr); cr.checkKeyStrength(out); } else if (spkac != null) { - cr = new CertificateRequest(u, spkac, spkacChallenge); + cr = new CertificateRequest(c, spkac, spkacChallenge); cr.checkKeyStrength(out); } else if (cr != null) { login = "1".equals(req.getParameter("login")); @@ -83,16 +82,18 @@ public class CertificateIssueForm extends Form { if (req.getParameter("CCA") == null) { error.mergeInto(new GigiApiException("You need to accept the CCA.")); } + Certificate result = null; try { result = cr.draft(); } catch (GigiApiException e) { error.mergeInto(e); } - if ( !error.isEmpty()) { + if ( !error.isEmpty() || result == null) { error.format(out, Page.getLanguage(req)); return false; } - result.issue(issueDate.getFrom(), issueDate.getTo()).waitFor(60000); + result.issue(issueDate.getFrom(), issueDate.getTo(), c.getActor()).waitFor(60000); + this.result = result; return true; } else { throw new GigiApiException("Error no action."); @@ -141,8 +142,11 @@ public class CertificateIssueForm extends Form { content.append('\n'); } - vars2.put("CN", cr.getCN()); - vars2.put("department", cr.getOu()); + vars2.put("CN", cr.getName()); + if (c.getTarget() instanceof Organisation) { + vars2.put("orga", "true"); + vars2.put("department", cr.getOu()); + } vars2.put("validity", issueDate); vars2.put("emails", content.toString()); vars2.put("hashs", new HashAlgorithms(cr.getSelectedDigest())); @@ -158,7 +162,7 @@ public class CertificateIssueForm extends Form { if (cp == null) { return false; } - } while ( !u.canIssue(cp)); + } while ( !cp.canBeIssuedBy(c.getTarget(), c.getActor())); if (cp.getId() == cr.getProfile().getId()) { vars.put("selected", " selected"); @@ -170,27 +174,6 @@ public class CertificateIssueForm extends Form { return true; } }); - final List orgs = u.getOrganisations(); - vars2.put("orga", orgs.size() == 0 ? null : new IterableDataset() { - - Iterator iter = orgs.iterator(); - - @Override - public boolean next(Language l, Map vars) { - if ( !iter.hasNext()) { - return false; - } - Organisation orga = iter.next(); - vars.put("key", orga.getId()); - vars.put("name", orga.getName()); - if (orga == cr.getOrg()) { - vars.put("selected", " selected"); - } else { - vars.put("selected", ""); - } - return true; - } - }); t.output(out, l, vars2); }