Subversion Repositories bacoAlunos

Rev

Rev 1928 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1925 grupo2 1
package pt.estgp.estgweb.filters.filters;
2
 
3
import org.apache.log4j.Logger;
4
import pt.estgp.estgweb.domain.CourseImpl;
5
import pt.estgp.estgweb.domain.UserSession;
6
import pt.estgp.estgweb.domain.dao.DaoFactory;
7
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
8
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
9
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
1934 grupo2 10
import pt.estgp.estgweb.services.courses.coursereport.documentmodel.CourseReportDocument;
1925 grupo2 11
import pt.estgp.estgweb.utils.Globals;
12
import pt.utl.ist.berserk.ServiceRequest;
13
import pt.utl.ist.berserk.ServiceResponse;
14
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
15
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
16
 
17
public class IsFromCourseCommission extends LoadControlFilter {
18
    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(IsFromCourseCommission.class);
19
 
20
    public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, 1.5.0/docs/api/java/lang/Exception.html">Exception
21
    {
22
 
23
        UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
24
 
25
        if(userSession.getUser() == null)
26
        {
27
            logger.info("try access restricted area:" + request.getRequester());
28
            throw new NeedAuthenticationException();
29
        }
30
 
31
        if(userSession.getUser().isSuperuser())
32
            return;
33
 
1934 grupo2 34
        5+0%2Fdocs%2Fapi+Object">Object obj = request.getServiceParameters().getParameter((1.5.0/docs/api/java/lang/String.html">String) filterParameters.getParameter(0));
35
        1.5.0/docs/api/java/lang/String.html">String courseCode;
36
        if (obj instanceof 1.5.0/docs/api/java/lang/String.html">String) {
37
            courseCode = (1.5.0/docs/api/java/lang/String.html">String) obj;
38
        }
39
        else if (obj instanceof CourseReportDocument) {
40
            courseCode = ((CourseReportDocument) obj).getCourseCode();
41
        }
42
        else {
43
            logger.info("Filter: IsFromCourseCommission - Invalid parameter");
44
            throw new AccessDeniedOperationException("fail.owner");
45
        }
46
 
1925 grupo2 47
        CourseImpl course = DaoFactory.getCourseDaoImpl().findCourseByCode(courseCode);
48
 
49
        if(!course.isFromCourseCommission(userSession.getUser()))
50
        {
51
            logger.warn(userSession.getUser().getUsername() + ": try access restricted area");
52
            throw new AccessDeniedOperationException("fail.owner");
53
        }
54
    }
55
}