blob: feadf4595c2f63805f6a7caa46879d63de043217 [file] [log] [blame]
Michael Hanl8ee31112016-07-21 14:10:24 +02001package de.ids_mannheim.korap.web.filter;
2
margaretha56e8e552017-12-05 16:31:21 +01003import org.springframework.beans.factory.annotation.Autowired;
4import org.springframework.stereotype.Component;
5
abcpro12cb86c62022-11-07 18:46:36 +00006import javax.annotation.Priority;
7import javax.ws.rs.Priorities;
abcpro1136ff592022-11-07 18:25:03 +00008import javax.ws.rs.container.ContainerRequestContext;
9import javax.ws.rs.container.ContainerRequestFilter;
margarethacd206792017-11-17 14:48:09 +010010
11import de.ids_mannheim.korap.exceptions.KustvaktException;
12import de.ids_mannheim.korap.exceptions.StatusCodes;
margaretha0e8f4e72018-04-05 14:11:52 +020013import de.ids_mannheim.korap.security.context.TokenContext;
margarethada3c7852018-06-14 20:35:11 +020014import de.ids_mannheim.korap.web.KustvaktResponseHandler;
margaretha894a7d72017-11-08 19:24:20 +010015
Michael Hanl8ee31112016-07-21 14:10:24 +020016/**
margaretha23aae222017-12-22 15:08:23 +010017 * EM: pretty much identical to {@link BlockingFilter}, should be deleted?
18 *
Michael Hanl8ee31112016-07-21 14:10:24 +020019 * @author hanl
20 * @date 11/12/2014
21 * <p/>
22 * endpoint filter to block access to an endpoint, in case no
23 * anonymous access should be allowed!
24 */
margaretha894a7d72017-11-08 19:24:20 +010025@Component
abcpro12cb86c62022-11-07 18:46:36 +000026@Priority(Priorities.AUTHORIZATION)
margaretha56e8e552017-12-05 16:31:21 +010027public class NonDemoBlockingFilter
abcpro1136ff592022-11-07 18:25:03 +000028 implements ContainerRequestFilter {
Michael Hanl8ee31112016-07-21 14:10:24 +020029
margaretha894a7d72017-11-08 19:24:20 +010030 @Autowired
margarethada3c7852018-06-14 20:35:11 +020031 private KustvaktResponseHandler kustvaktResponseHandler;
margaretha56e8e552017-12-05 16:31:21 +010032
Michael Hanl8ee31112016-07-21 14:10:24 +020033 @Override
abcpro1136ff592022-11-07 18:25:03 +000034 public void filter (ContainerRequestContext request) {
Michael Hanl8ee31112016-07-21 14:10:24 +020035 TokenContext context;
36 try {
37 context = (TokenContext) request.getUserPrincipal();
38 }
39 catch (UnsupportedOperationException e) {
margarethada3c7852018-06-14 20:35:11 +020040 throw kustvaktResponseHandler.throwit(new KustvaktException(
margaretha56e8e552017-12-05 16:31:21 +010041 StatusCodes.UNSUPPORTED_OPERATION, e.getMessage(), e));
Michael Hanl8ee31112016-07-21 14:10:24 +020042 }
43
margaretha56e8e552017-12-05 16:31:21 +010044 if (context == null || context.isDemo()) {
margarethada3c7852018-06-14 20:35:11 +020045 throw kustvaktResponseHandler.throwit(
margaretha23aae222017-12-22 15:08:23 +010046 new KustvaktException(StatusCodes.AUTHORIZATION_FAILED,
47 "Operation is not permitted for guest users"));
margarethacd206792017-11-17 14:48:09 +010048 }
Michael Hanl8ee31112016-07-21 14:10:24 +020049 }
50}