java/nekurak.net-web/src/java/cz/frantovo/nekurak/rest/HlasovaniREST.java
author František Kučera <franta-hg@frantovo.cz>
Sun Jul 10 19:01:03 2011 +0200 (2011-07-10)
changeset 183 96abaf49fc7a
parent 174 ca3c7dd220fe
permissions -rw-r--r--
Ladící výpis CSRF u hlasování.
     1 package cz.frantovo.nekurak.rest;
     2 
     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;
    13 
    14 @Path("hlas")
    15 public class HlasovaniREST {
    16 
    17 	@Context
    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();
    22 
    23 	@POST
    24 	@Consumes(MIME_XML)
    25 	@Produces(MIME_TEXT)
    26 	public String hlasuj(HlasXML xml) {
    27 		zkontrolujCSRF(pozadavek, xml);
    28 		hledac.getPodnikEJB().hlasuj(xml.getPodnik(), xml.isKourit(), HttpPozadavek.getIPadresa(pozadavek));
    29 		return "ok";
    30 	}
    31 
    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);
    38 		}
    39 	}
    40 }