]> WPIA git - gigi.git/blob - src/club/wpia/gigi/api/CATSRestrictedApi.java
fix: ResultSet.getDate is often wrong as it fetches day-precision times
[gigi.git] / src / club / wpia / gigi / api / CATSRestrictedApi.java
1 package club.wpia.gigi.api;
2
3 import java.io.IOException;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import club.wpia.gigi.dbObjects.Certificate;
9 import club.wpia.gigi.dbObjects.CertificateOwner;
10 import club.wpia.gigi.dbObjects.Organisation;
11 import club.wpia.gigi.dbObjects.Certificate.SANType;
12 import club.wpia.gigi.dbObjects.Certificate.SubjectAlternateName;
13 import club.wpia.gigi.util.ServerConstants;
14
15 public abstract class CATSRestrictedApi extends APIPoint {
16
17     @Override
18     public final void process(HttpServletRequest req, HttpServletResponse resp, CertificateOwner u, Certificate clientCert) throws IOException {
19         if ( !(u instanceof Organisation)) {
20             resp.sendError(500, "Error, invalid cert");
21             return;
22         }
23         if ( !((Organisation) u).isSelfOrganisation()) {
24             resp.sendError(500, "Error, invalid cert");
25             return;
26         }
27         if ( !hasMail(clientCert, ServerConstants.getQuizMailAddress())) {
28             resp.sendError(500, "Error, invalid cert");
29             return;
30         }
31         processAuthenticated(req, resp);
32     }
33
34     public abstract void processAuthenticated(HttpServletRequest req, HttpServletResponse resp) throws IOException;
35
36     public boolean hasMail(Certificate clientCert, String mail) {
37         for (SubjectAlternateName a : clientCert.getSANs()) {
38             if (a.getType() == SANType.EMAIL && a.getName().equals(mail)) {
39                 return true;
40             }
41         }
42         return false;
43     }
44 }