import java.io.IOException;
import java.io.PrintWriter;
+import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
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.Scope;
import org.cacert.gigi.output.template.SprintfCommand;
public class Verify extends Page {
- private static final SprintfCommand emailAddressVerified = new SprintfCommand("Email address ${subject} verified");
+ private static final SprintfCommand emailAddressVerified = new SprintfCommand("Email address {0} verified", Arrays.asList("${subject}"));
- private static final SprintfCommand domainVerified = new SprintfCommand("Domain ${subject} verified");
+ private static final SprintfCommand domainVerified = new SprintfCommand("Domain {0} verified", Arrays.asList("${subject}"));
private class VerificationForm extends Form {
Domain domain = Domain.getById(Integer.parseInt(id));
subject = domain.getSuffix();
target = domain;
+ } else {
+ throw new IllegalArgumentException();
+ }
+ try {
+ if ( !target.isVerifyable(hash)) {
+ throw new IllegalArgumentException();
+ }
+ } catch (GigiApiException e) {
+ throw new IllegalArgumentException(e);
}
}
@Override
- public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
+ public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
HashMap<String, Object> data = new HashMap<>();
data.put("subject", subject);
if ("email".equals(type)) {
try {
target.verify(hash);
- emailAddressVerified.output(out, getLanguage(req), data);
} catch (IllegalArgumentException e) {
- out.println(translate(req, "The email address is invalid."));
- } catch (GigiApiException e) {
- e.format(out, getLanguage(req));
+ throw new PermamentFormException(new GigiApiException("Given token could not be found to complete the verification process (Email Ping)."));
}
+ return new SuccessMessageResult(new Scope(emailAddressVerified, data));
} else if ("domain".equals(type)) {
try {
target.verify(hash);
- domainVerified.output(out, getLanguage(req), data);
} catch (IllegalArgumentException e) {
- out.println(translate(req, "The domain is invalid."));
- } catch (GigiApiException e) {
- e.format(out, getLanguage(req));
+ throw new PermamentFormException(new GigiApiException("Given token could not be found to complete the verification process (Domain Ping)."));
}
+ return new SuccessMessageResult(new Scope(domainVerified, data));
+ } else {
+ throw new GigiApiException("Invalid object type.");
}
- return true;
}
@Override
return false;
}
+ @Override
+ public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ return Form.getForm(req, VerificationForm.class).submitExceptionProtected(req, resp);
+ }
+
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
- try {
- if (Form.getForm(req, VerificationForm.class).submit(resp.getWriter(), req)) {
- }
- } catch (GigiApiException e) {
- e.format(resp.getWriter(), getLanguage(req));
+ if (Form.printFormErrors(req, resp.getWriter())) {
+ Form.getForm(req, VerificationForm.class).output(resp.getWriter(), getLanguage(req), new HashMap<String, Object>());
}
}
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."));
-
}
}