]> WPIA git - gigi.git/blob - src/org/cacert/gigi/api/CATSResolve.java
6e7c83dd58aafb035c779f318f288b86e63fd43a
[gigi.git] / src / org / cacert / gigi / api / CATSResolve.java
1 package org.cacert.gigi.api;
2
3 import java.io.IOException;
4
5 import javax.servlet.http.HttpServletRequest;
6 import javax.servlet.http.HttpServletResponse;
7
8 import org.cacert.gigi.dbObjects.Certificate;
9 import org.cacert.gigi.dbObjects.CertificateOwner;
10 import org.cacert.gigi.dbObjects.Organisation;
11 import org.cacert.gigi.dbObjects.User;
12 import org.cacert.gigi.util.ServerConstants;
13
14 public class CATSResolve extends CATSRestrictedApi {
15
16     public static final String PATH = "/cats/resolve";
17
18     @Override
19     public void processAuthenticated(HttpServletRequest req, HttpServletResponse resp) throws IOException {
20         String target = req.getParameter("serial");
21         if (target == null) {
22             resp.sendError(500, "Error, requires a serial parameter");
23             return;
24         }
25         target = target.toLowerCase();
26         Certificate clientCert = Certificate.getBySerial(target);
27         if (clientCert == null) {
28             resp.sendError(500, "Error, requires valid serial");
29             return;
30         }
31         CertificateOwner o = CertificateOwner.getByEnabledSerial(target);
32         if (o instanceof Organisation) {
33             Organisation org = (Organisation) o;
34             if (org.isSelfOrganisation()) {
35                 if (hasMail(clientCert, ServerConstants.getQuizAdminMailAddress())) {
36                     resp.setContentType("text/plain; charset=UTF-8");
37                     resp.getWriter().print("admin");
38                     return;
39                 }
40             }
41         }
42         if ( !(o instanceof User)) {
43             resp.sendError(500, "Error, requires valid serial");
44             return;
45         }
46         resp.setContentType("text/plain; charset=UTF-8");
47         resp.getWriter().print(o.getId());
48     }
49 }