X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fwot%2FAssuranceForm.java;h=9188013de885f34653737b491fa89130bef9db87;hp=3020390d28b9855b8a1fb8985661bf188414bb9e;hb=4ffc462f4cfc470a8ad8bfc867d07a2b14adcf11;hpb=3e9f3d6f2655dd7ff819a77fba2076da3c1f3717 diff --git a/src/org/cacert/gigi/pages/wot/AssuranceForm.java b/src/org/cacert/gigi/pages/wot/AssuranceForm.java index 3020390d..9188013d 100644 --- a/src/org/cacert/gigi/pages/wot/AssuranceForm.java +++ b/src/org/cacert/gigi/pages/wot/AssuranceForm.java @@ -1,21 +1,25 @@ package org.cacert.gigi.pages.wot; import java.io.PrintWriter; -import java.sql.SQLException; import java.text.SimpleDateFormat; -import java.util.Date; import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedList; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.cacert.gigi.GigiApiException; +import org.cacert.gigi.dbObjects.Assurance.AssuranceType; import org.cacert.gigi.dbObjects.Name; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; -import org.cacert.gigi.output.Form; +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.Page; +import org.cacert.gigi.pages.PasswordResetPage; +import org.cacert.gigi.util.DayDate; import org.cacert.gigi.util.Notary; public class AssuranceForm extends Form { @@ -24,18 +28,29 @@ public class AssuranceForm extends Form { private Name assureeName; - private Date dob; + private DayDate dob; + + private String location = ""; + + private String date = ""; + + private String aword; + + private User assurer; + + private AssuranceType type = AssuranceType.FACE_TO_FACE; private static final Template templ; static { templ = new Template(AssuranceForm.class.getResource("AssuranceForm.templ")); } - public AssuranceForm(HttpServletRequest hsr, int assuree) { + public AssuranceForm(HttpServletRequest hsr, User assuree) { super(hsr); - this.assuree = new User(assuree); + assurer = Page.getUser(hsr); + this.assuree = assuree; assureeName = this.assuree.getName(); - dob = this.assuree.getDob(); + dob = this.assuree.getDoB(); } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); @@ -48,47 +63,91 @@ public class AssuranceForm extends Form { res.putAll(vars); res.put("nameExplicit", assuree.getName()); res.put("name", assuree.getName().toString()); - try { - res.put("maxpoints", assuree.getMaxAssurePoints()); - } catch (SQLException e) { - e.printStackTrace(); + res.put("maxpoints", assurer.getMaxAssurePoints()); + res.put("dob", sdf.format(assuree.getDoB().toDate())); + res.put("dobFmt2", sdf2.format(assuree.getDoB().toDate())); + res.put("location", location); + res.put("date", date); + res.put("aword", aword); + final LinkedList ats = new LinkedList<>(); + for (AssuranceType at : AssuranceType.values()) { + try { + Notary.may(assurer, assuree, at); + ats.add(at); + } catch (GigiApiException e) { + } } - res.put("dob", sdf.format(assuree.getDob())); - res.put("dobFmt2", sdf2.format(assuree.getDob())); + res.put("ats", new IterableDataset() { + + Iterator t = ats.iterator(); + + @Override + public boolean next(Language l, Map vars) { + if ( !t.hasNext()) { + return false; + } + AssuranceType t1 = t.next(); + vars.put("type", t1.getDescription()); + vars.put("id", t1.toString()); + vars.put("sel", t1 == type ? " selected" : ""); + return true; + } + }); templ.output(out, l, res); } @Override - public boolean submit(PrintWriter out, HttpServletRequest req) { - if ( !"1".equals(req.getParameter("certify")) || !"1".equals(req.getParameter("rules")) || !"1".equals(req.getParameter("CCAAgreed")) || !"1".equals(req.getParameter("assertion"))) { - outputError(out, req, "You failed to check all boxes to validate" + " your adherence to the rules and policies of CAcert"); + public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException { + location = req.getParameter("location"); + date = req.getParameter("date"); + GigiApiException gae = new GigiApiException(); + if (date == null || location == null) { + gae.mergeInto(new GigiApiException("You need to enter location and date!")); + } + if ( !"1".equals(req.getParameter("certify")) || !"1".equals(req.getParameter("rules")) || !"1".equals(req.getParameter("assertion"))) { + gae.mergeInto(new GigiApiException("You failed to check all boxes to validate" + " your adherence to the rules and policies of SomeCA")); } + if ("1".equals(req.getParameter("passwordReset"))) { + aword = req.getParameter("passwordResetValue"); + if ("".equals(aword)) { + aword = null; + } + } else { + aword = null; + } + String val = req.getParameter("assuranceType"); + if (val != null) { + try { + type = AssuranceType.valueOf(val); + } catch (IllegalArgumentException e) { + gae.mergeInto(new GigiApiException("Assurance Type wrong.")); + } + } + int pointsI = 0; String points = req.getParameter("points"); if (points == null || "".equals(points)) { - outputError(out, req, "For an assurance, you need to enter points."); + gae.mergeInto(new GigiApiException("For an assurance, you need to enter points.")); } else { try { pointsI = Integer.parseInt(points); } catch (NumberFormatException e) { - outputError(out, req, "The points entered were not a number."); + gae.mergeInto(new GigiApiException("The points entered were not a number.")); } } - if (isFailed(out)) { - return false; + if ( !gae.isEmpty()) { + throw gae; } - try { - Notary.assure(Page.getUser(req), assuree, assureeName, dob, pointsI, req.getParameter("location"), req.getParameter("date")); - return true; - } catch (SQLException e) { - e.printStackTrace(); - } catch (GigiApiException e) { - e.format(out, Page.getLanguage(req)); + Notary.assure(assurer, assuree, assureeName, dob, pointsI, location, req.getParameter("date"), type); + if (aword != null && !aword.equals("")) { + Language l = Language.getInstance(assuree.getPreferredLocale()); + String method = l.getTranslation("A password reset was triggered. If you did a password reset by assurance, please enter your secret password using this form:"); + String subject = l.getTranslation("Password reset by assurance"); + PasswordResetPage.initPasswordResetProcess(out, assuree, req, aword, l, method, subject); } - - return false; + return true; } public User getAssuree() {