import java.io.IOException;
import java.io.PrintWriter;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.cacert.gigi.GigiApiException;
import org.cacert.gigi.dbObjects.Domain;
import org.cacert.gigi.dbObjects.EmailAddress;
+import org.cacert.gigi.dbObjects.Verifyable;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.Form;
+import org.cacert.gigi.output.template.SprintfCommand;
public class Verify extends Page {
+ private static final SprintfCommand emailAddressVerified = new SprintfCommand("Email address {0} verified", Arrays.asList("${subject}"));
+
+ private static final SprintfCommand domainVerified = new SprintfCommand("Domain {0} verified", Arrays.asList("${subject}"));
+
private class VerificationForm extends Form {
private String hash;
private String id;
+ private Verifyable target;
+
+ String subject;
+
public VerificationForm(HttpServletRequest hsr) {
super(hsr, PATH);
hash = hsr.getParameter("hash");
type = hsr.getParameter("type");
id = hsr.getParameter("id");
+ if ("email".equals(type)) {
+ EmailAddress addr = EmailAddress.getById(Integer.parseInt(id));
+ subject = addr.getAddress();
+ target = addr;
+ } else if ("domain".equals(type)) {
+ Domain domain = Domain.getById(Integer.parseInt(id));
+ subject = domain.getSuffix();
+ target = domain;
+ }
}
@Override
public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+ HashMap<String, Object> data = new HashMap<>();
+ data.put("subject", subject);
if ("email".equals(type)) {
try {
- EmailAddress ea = EmailAddress.getById(Integer.parseInt(id));
- ea.verify(hash);
- out.println("Email verification completed.");
+ target.verify(hash);
+ emailAddressVerified.output(out, getLanguage(req), data);
} catch (IllegalArgumentException e) {
out.println(translate(req, "The email address is invalid."));
} catch (GigiApiException e) {
}
} else if ("domain".equals(type)) {
try {
- Domain ea = Domain.getById(Integer.parseInt(id));
- ea.verify(hash);
- out.println("Domain verification completed.");
+ target.verify(hash);
+ domainVerified.output(out, getLanguage(req), data);
} catch (IllegalArgumentException e) {
- out.println(translate(req, "The domain address is invalid."));
+ out.println(translate(req, "The domain is invalid."));
} catch (GigiApiException e) {
e.format(out, getLanguage(req));
}
vars.put("hash", hash);
vars.put("id", id);
vars.put("type", type);
+
+ vars.put("subject", subject);
getDefaultTemplate().output(out, l, vars);
}
-
}
public static final String PATH = "/verify";
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ try {
+ new VerificationForm(req).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
+ } catch (IllegalArgumentException e) {
+ resp.getWriter().println(translate(req, "The object to verify is invalid."));
+
+ }
}
}