Rev 1617 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1617 | jmachado | 1 | package pt.estgp.estgweb.filters.filters; |
2 | |||
3 | import org.apache.log4j.Logger; |
||
4 | import pt.estgp.estgweb.Globals; |
||
5 | import pt.estgp.estgweb.domain.UserSession; |
||
6 | import pt.estgp.estgweb.filters.chains.AdminControlFilter; |
||
7 | import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException; |
||
8 | import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
||
9 | import pt.estgp.estgweb.utils.ConfigProperties; |
||
10 | import pt.estgp.estgweb.utils.RoleManager; |
||
11 | import pt.utl.ist.berserk.ServiceRequest; |
||
12 | import pt.utl.ist.berserk.ServiceResponse; |
||
13 | import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
||
14 | import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
||
15 | |||
16 | public class ParameterValuePrefixCheck extends AdminControlFilter { |
||
17 | private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(ParameterValuePrefixCheck.class); |
||
18 | |||
19 | private static final 1.5.0/docs/api/java/lang/String.html">String ALL_ROLE = ConfigProperties.getProperty("user.super"); |
||
20 | |||
21 | public void execute(ServiceRequest request, ServiceResponse response) |
||
22 | throws FilterException, 1.5.0/docs/api/java/lang/Exception.html">Exception |
||
23 | { |
||
24 | |||
25 | } |
||
26 | |||
27 | public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, 1.5.0/docs/api/java/lang/Exception.html">Exception |
||
28 | { |
||
29 | |||
30 | UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
||
31 | |||
32 | if(userSession.getUser() == null) |
||
33 | { |
||
34 | logger.info("try access restricted area:" + request.getRequester()); |
||
35 | throw new NeedAuthenticationException(); |
||
36 | } |
||
37 | if(RoleManager.hasRole(userSession.getUser(),ALL_ROLE) || userSession.getUser().isSuperuser()) |
||
38 | return; |
||
39 | |||
40 | 1.5.0/docs/api/java/lang/String.html">String parameterName = (1.5.0/docs/api/java/lang/String.html">String) filterParameters.getParameter(0); |
||
41 | 1.5.0/docs/api/java/lang/String.html">String parameterPrefix = (1.5.0/docs/api/java/lang/String.html">String) filterParameters.getParameter(1); |
||
1667 | jmachado | 42 | if(filterParameters.getParameter(parameterName) != null) |
43 | { |
||
44 | 1.5.0/docs/api/java/lang/String.html">String parameter = (1.5.0/docs/api/java/lang/String.html">String) filterParameters.getParameter(parameterName); |
||
45 | if(parameter.startsWith(parameterPrefix)) |
||
46 | { |
||
47 | return; |
||
48 | } |
||
49 | } |
||
50 | throw new AccessDeniedOperationException("fail.prefix.parameter"); |
||
1617 | jmachado | 51 | } |
52 | } |