java/nekurak.net-web/src/java/cz/frantovo/nekurak/rest/HlasovaniREST.java
changeset 174 ca3c7dd220fe
parent 145 0efefbf5f8b6
child 183 96abaf49fc7a
     1.1 --- a/java/nekurak.net-web/src/java/cz/frantovo/nekurak/rest/HlasovaniREST.java	Sun Jun 20 14:46:47 2010 +0200
     1.2 +++ b/java/nekurak.net-web/src/java/cz/frantovo/nekurak/rest/HlasovaniREST.java	Sat Jan 15 18:14:15 2011 +0100
     1.3 @@ -1,5 +1,6 @@
     1.4  package cz.frantovo.nekurak.rest;
     1.5  
     1.6 +import cz.frantovo.nekurak.posluchac.OchranaProtiCSRF;
     1.7  import cz.frantovo.nekurak.util.HttpPozadavek;
     1.8  import cz.frantovo.nekurak.web.HledacSluzby;
     1.9  import cz.frantovo.nekurak.xml.HlasXML;
    1.10 @@ -23,7 +24,16 @@
    1.11  	@Consumes(MIME_XML)
    1.12  	@Produces(MIME_TEXT)
    1.13  	public String hlasuj(HlasXML xml) {
    1.14 +		zkontrolujCSRF(pozadavek, xml);
    1.15  		hledac.getPodnikEJB().hlasuj(xml.getPodnik(), xml.isKourit(), HttpPozadavek.getIPadresa(pozadavek));
    1.16  		return "ok";
    1.17  	}
    1.18 +
    1.19 +	private static void zkontrolujCSRF(HttpServletRequest pozadavek, HlasXML xml) throws RuntimeException {
    1.20 +		String csrfTokenOcekavany = (String) pozadavek.getSession().getAttribute(OchranaProtiCSRF.NAZEV_ATRIBUTU);
    1.21 +		String csrfTokenObdrzeny = xml.getCsrfToken();
    1.22 +		if (csrfTokenOcekavany == null || !csrfTokenOcekavany.equals(csrfTokenObdrzeny)) {
    1.23 +			throw new RuntimeException("CSRF token zaslaný klientem neodpovídá očekávanému.");
    1.24 +		}
    1.25 +	}
    1.26  }