]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/admin/support/SupportEnterTicketForm.java
upd: enforce a more strict Form call pattern.
[gigi.git] / src / org / cacert / gigi / pages / admin / support / SupportEnterTicketForm.java
index 5db93f30960df3c03c1bdbe4b349b2b7f30871ee..e2e30a93d153169fced9f5858167be37e48b0510 100644 (file)
@@ -5,35 +5,39 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
+import org.cacert.gigi.Gigi;
 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;
+import org.cacert.gigi.pages.LoginPage;
+import org.cacert.gigi.util.AuthorizationContext;
 
 public class SupportEnterTicketForm extends Form {
 
-    private static Template t;
+    private static final Template t = new Template(SupportEnterTicketForm.class.getResource("SupportEnterTicketForm.templ"));
 
-    private User target;
-    static {
-        t = new Template(SupportEnterTicketForm.class.getResource("SupportEnterTicketForm.templ"));
-    }
-
-    public SupportEnterTicketForm(HttpServletRequest hsr, User target) {
+    public SupportEnterTicketForm(HttpServletRequest hsr) {
         super(hsr);
-        this.target = target;
     }
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) throws GigiApiException {
-        // [asdmASDM]\d{8}\.\d+
-        String ticket = req.getParameter("ticketno");
-        if (ticket.matches("[asdmASDM]\\d{8}\\.\\d+")) {
-            req.getSession().setAttribute("ticketNo" + target.getId(), ticket);
-            return true;
+    public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
+        if (req.getParameter("setTicket") != null) {
+            // [asdmASDM]\d{8}\.\d+
+            String ticket = req.getParameter("ticketno");
+            if (ticket.matches("[asdmASDM]\\d{8}\\.\\d+")) {
+                AuthorizationContext ac = LoginPage.getAuthorizationContext(req);
+                req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(ac.getActor(), ticket));
+                return new RedirectResult(SupportEnterTicketPage.PATH);
+            }
+            throw new GigiApiException("Ticket format malformed");
+        } else if (req.getParameter("deleteTicket") != null) {
+            AuthorizationContext ac = LoginPage.getAuthorizationContext(req);
+            req.getSession().setAttribute(Gigi.AUTH_CONTEXT, new AuthorizationContext(ac.getActor(), ac.getActor()));
+            return new RedirectResult(SupportEnterTicketPage.PATH);
         }
-        return false;
+        throw new GigiApiException("No valid action given.");
     }
 
     @Override