Ladící výpis CSRF u hlasování.
1 package cz.frantovo.nekurak.rest;
3 import cz.frantovo.nekurak.posluchac.OchranaProtiCSRF;
4 import cz.frantovo.nekurak.util.HttpPozadavek;
5 import cz.frantovo.nekurak.web.HledacSluzby;
6 import cz.frantovo.nekurak.xml.HlasXML;
7 import javax.servlet.http.HttpServletRequest;
8 import javax.ws.rs.Consumes;
9 import javax.ws.rs.POST;
10 import javax.ws.rs.Path;
11 import javax.ws.rs.Produces;
12 import javax.ws.rs.core.Context;
15 public class HlasovaniREST {
18 HttpServletRequest pozadavek;
19 private static final String MIME_XML = "text/xml";
20 private static final String MIME_TEXT = "text/plain";
21 private HledacSluzby hledac = new HledacSluzby();
26 public String hlasuj(HlasXML xml) {
27 zkontrolujCSRF(pozadavek, xml);
28 hledac.getPodnikEJB().hlasuj(xml.getPodnik(), xml.isKourit(), HttpPozadavek.getIPadresa(pozadavek));
32 private static void zkontrolujCSRF(HttpServletRequest pozadavek, HlasXML xml) throws RuntimeException {
33 String csrfTokenOcekavany = (String) pozadavek.getSession().getAttribute(OchranaProtiCSRF.NAZEV_ATRIBUTU);
34 String csrfTokenObdrzeny = xml.getCsrfToken();
35 if (csrfTokenOcekavany == null || !csrfTokenOcekavany.equals(csrfTokenObdrzeny)) {
36 String hláška = String.format("CSRF token zaslaný klientem neodpovídá očekávanému. '%1s' != '%2s'", csrfTokenOcekavany, csrfTokenObdrzeny);
37 throw new RuntimeException(hláška);