package de.ahus1.lottery.adapter.dropwizard.resource;
import de.ahus1.lottery.domain.DrawingService;
import io.dropwizard.auth.Auth;
import org.keycloak.KeycloakPrincipal;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.representations.IDToken;
import javax.annotation.security.RolesAllowed;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.io.IOException;
import java.time.LocalDate;
@Path("/")
@Produces(MediaType.TEXT_HTML)
public class DrawRessource {
@Context
private HttpServletRequest request;
@GET
// @RolesAllowed("user")
public DrawView show() {
KeycloakSecurityContext session = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
DrawBean bean = new DrawBean();
DrawView view = new DrawView(bean);
bean.setIdToken(session.getIdToken());
return view;
}
@POST
@Path("/draw")
@RolesAllowed("user")
public DrawView draw(@FormParam("date") String dateAsString) {
KeycloakSecurityContext session = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
DrawBean bean = new DrawBean();
LocalDate date = LocalDate.parse(dateAsString);
bean.setDraw(DrawingService.drawNumbers(date));
DrawView view = new DrawView(bean);
bean.setIdToken(session.getIdToken());
return view;
}
@GET
@Path("/logout")
public LogoutView logout() throws ServletException {
request.logout();
return new LogoutView();
}
}