]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/ChangeForm.java
upd: use a more strict pattern for handling forms
[gigi.git] / src / org / cacert / gigi / pages / account / ChangeForm.java
index f200c32398075482965ab19f50df5b78a2fb6755..582fea07428f47d41ce68af5a2a985c81c2d0bbc 100644 (file)
@@ -1,34 +1,53 @@
 package org.cacert.gigi.pages.account;
 
-import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.cacert.gigi.Language;
-import org.cacert.gigi.output.Form;
-import org.cacert.gigi.output.Template;
+import org.cacert.gigi.GigiApiException;
+import org.cacert.gigi.dbObjects.User;
+import org.cacert.gigi.localisation.Language;
+import org.cacert.gigi.output.template.Form;
+import org.cacert.gigi.output.template.Template;
 
 public class ChangeForm extends Form {
-       public ChangeForm(HttpServletRequest hsr) {
-               super(hsr);
-       }
-
-       private static Template t;
-       static {
-               t = new Template(
-                       new InputStreamReader(ChangePasswordPage.class.getResourceAsStream("ChangePasswordForm.templ")));
-       }
-
-       @Override
-       public void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
-               t.output(out, l, vars);
-       }
-
-       @Override
-       public boolean submit(PrintWriter out, HttpServletRequest req) {
-               return false;
-       }
+
+    private User target;
+
+    public ChangeForm(HttpServletRequest hsr, User target) {
+        super(hsr);
+        this.target = target;
+    }
+
+    private static final Template t = new Template(ChangePasswordPage.class.getResource("ChangePasswordForm.templ"));
+
+    @Override
+    public void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
+        t.output(out, l, vars);
+    }
+
+    @Override
+    public boolean submit(HttpServletRequest req) throws GigiApiException {
+        String oldpassword = req.getParameter("oldpassword");
+        String p1 = req.getParameter("pword1");
+        String p2 = req.getParameter("pword2");
+        GigiApiException error = new GigiApiException();
+        if (oldpassword == null || p1 == null || p2 == null) {
+            throw new GigiApiException("All fields are required.");
+        }
+        if ( !p1.equals(p2)) {
+            throw new GigiApiException("New passwords do not match.");
+        }
+        try {
+            target.changePassword(oldpassword, p1);
+        } catch (GigiApiException e) {
+            error.mergeInto(e);
+        }
+        if ( !error.isEmpty()) {
+            throw error;
+        }
+        return true;
+    }
 
 }