1 package club.wpia.gigi.api;
3 import java.io.IOException;
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
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;
15 public abstract class CATSRestrictedApi extends APIPoint {
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");
23 if ( !((Organisation) u).isSelfOrganisation()) {
24 resp.sendError(500, "Error, invalid cert");
27 if ( !hasMail(clientCert, ServerConstants.getQuizMailAddress())) {
28 resp.sendError(500, "Error, invalid cert");
31 processAuthenticated(req, resp);
34 public abstract void processAuthenticated(HttpServletRequest req, HttpServletResponse resp) throws IOException;
36 public boolean hasMail(Certificate clientCert, String mail) {
37 for (SubjectAlternateName a : clientCert.getSANs()) {
38 if (a.getType() == SANType.EMAIL && a.getName().equals(mail)) {