| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 1 | package de.ids_mannheim.korap.web.filter; |
| 2 | |
| margaretha | 56e8e55 | 2017-12-05 16:31:21 +0100 | [diff] [blame] | 3 | import org.springframework.beans.factory.annotation.Autowired; |
| 4 | import org.springframework.stereotype.Component; |
| 5 | |
| abcpro1 | 2cb86c6 | 2022-11-07 18:46:36 +0000 | [diff] [blame^] | 6 | import javax.annotation.Priority; |
| 7 | import javax.ws.rs.Priorities; |
| abcpro1 | 136ff59 | 2022-11-07 18:25:03 +0000 | [diff] [blame] | 8 | import javax.ws.rs.container.ContainerRequestContext; |
| 9 | import javax.ws.rs.container.ContainerRequestFilter; |
| margaretha | cd20679 | 2017-11-17 14:48:09 +0100 | [diff] [blame] | 10 | |
| 11 | import de.ids_mannheim.korap.exceptions.KustvaktException; |
| 12 | import de.ids_mannheim.korap.exceptions.StatusCodes; |
| margaretha | 0e8f4e7 | 2018-04-05 14:11:52 +0200 | [diff] [blame] | 13 | import de.ids_mannheim.korap.security.context.TokenContext; |
| margaretha | da3c785 | 2018-06-14 20:35:11 +0200 | [diff] [blame] | 14 | import de.ids_mannheim.korap.web.KustvaktResponseHandler; |
| margaretha | 894a7d7 | 2017-11-08 19:24:20 +0100 | [diff] [blame] | 15 | |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 16 | /** |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 17 | * EM: pretty much identical to {@link BlockingFilter}, should be deleted? |
| 18 | * |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 19 | * @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 | */ |
| margaretha | 894a7d7 | 2017-11-08 19:24:20 +0100 | [diff] [blame] | 25 | @Component |
| abcpro1 | 2cb86c6 | 2022-11-07 18:46:36 +0000 | [diff] [blame^] | 26 | @Priority(Priorities.AUTHORIZATION) |
| margaretha | 56e8e55 | 2017-12-05 16:31:21 +0100 | [diff] [blame] | 27 | public class NonDemoBlockingFilter |
| abcpro1 | 136ff59 | 2022-11-07 18:25:03 +0000 | [diff] [blame] | 28 | implements ContainerRequestFilter { |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 29 | |
| margaretha | 894a7d7 | 2017-11-08 19:24:20 +0100 | [diff] [blame] | 30 | @Autowired |
| margaretha | da3c785 | 2018-06-14 20:35:11 +0200 | [diff] [blame] | 31 | private KustvaktResponseHandler kustvaktResponseHandler; |
| margaretha | 56e8e55 | 2017-12-05 16:31:21 +0100 | [diff] [blame] | 32 | |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 33 | @Override |
| abcpro1 | 136ff59 | 2022-11-07 18:25:03 +0000 | [diff] [blame] | 34 | public void filter (ContainerRequestContext request) { |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 35 | TokenContext context; |
| 36 | try { |
| 37 | context = (TokenContext) request.getUserPrincipal(); |
| 38 | } |
| 39 | catch (UnsupportedOperationException e) { |
| margaretha | da3c785 | 2018-06-14 20:35:11 +0200 | [diff] [blame] | 40 | throw kustvaktResponseHandler.throwit(new KustvaktException( |
| margaretha | 56e8e55 | 2017-12-05 16:31:21 +0100 | [diff] [blame] | 41 | StatusCodes.UNSUPPORTED_OPERATION, e.getMessage(), e)); |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 42 | } |
| 43 | |
| margaretha | 56e8e55 | 2017-12-05 16:31:21 +0100 | [diff] [blame] | 44 | if (context == null || context.isDemo()) { |
| margaretha | da3c785 | 2018-06-14 20:35:11 +0200 | [diff] [blame] | 45 | throw kustvaktResponseHandler.throwit( |
| margaretha | 23aae22 | 2017-12-22 15:08:23 +0100 | [diff] [blame] | 46 | new KustvaktException(StatusCodes.AUTHORIZATION_FAILED, |
| 47 | "Operation is not permitted for guest users")); |
| margaretha | cd20679 | 2017-11-17 14:48:09 +0100 | [diff] [blame] | 48 | } |
| Michael Hanl | 8ee3111 | 2016-07-21 14:10:24 +0200 | [diff] [blame] | 49 | } |
| 50 | } |