1 package club.wpia.gigi.pages.account;
3 import java.io.PrintWriter;
6 import javax.servlet.http.HttpServletRequest;
8 import club.wpia.gigi.GigiApiException;
9 import club.wpia.gigi.dbObjects.User;
10 import club.wpia.gigi.localisation.Language;
11 import club.wpia.gigi.output.template.Form;
12 import club.wpia.gigi.output.template.Template;
13 import club.wpia.gigi.output.template.TranslateCommand;
14 import club.wpia.gigi.pages.LoginPage;
15 import club.wpia.gigi.util.AuthorizationContext;
17 public class ChangeForm extends Form {
21 private AuthorizationContext c;
23 public ChangeForm(HttpServletRequest hsr, User target) {
26 c = LoginPage.getAuthorizationContext(hsr);
29 private static final Template t = new Template(ChangePasswordPage.class.getResource("ChangePasswordForm.templ"));
32 public void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
33 if ( !c.isStronglyAuthenticated()) {
34 vars.put("currentLoginMethod", "pw");
36 t.output(out, l, vars);
40 public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
41 String oldpassword = req.getParameter("oldpassword");
42 String p1 = req.getParameter("pword1");
43 String p2 = req.getParameter("pword2");
44 GigiApiException error = new GigiApiException();
45 if ((oldpassword == null && !c.isStronglyAuthenticated()) || p1 == null || p2 == null) {
46 throw new GigiApiException("All fields are required.");
48 if ( !p1.equals(p2)) {
49 throw new GigiApiException("New passwords do not match.");
52 if (c.isStronglyAuthenticated()) {
53 target.setPassword(p1);
55 target.changePassword(oldpassword, p1);
57 target.writeUserLog(target, "User triggered password reset");
58 } catch (GigiApiException e) {
61 if ( !error.isEmpty()) {
64 return new SuccessMessageResult(new TranslateCommand("Password changed."));