|
From: <rv...@us...> - 2010-02-15 13:31:03
|
Revision: 499
http://treebase.svn.sourceforge.net/treebase/?rev=499&view=rev
Author: rvos
Date: 2010-02-15 13:30:56 +0000 (Mon, 15 Feb 2010)
Log Message:
-----------
Added isSubmitter() method, which checks whether the current user has access to the download by virtue of being a submitter (as opposed to a reviewer), this is needed to address issue 2949853
Modified Paths:
--------------
trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/AbstractDownloadController.java
Modified: trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/AbstractDownloadController.java
===================================================================
--- trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/AbstractDownloadController.java 2010-02-15 13:28:43 UTC (rev 498)
+++ trunk/treebase-web/src/main/java/org/cipres/treebase/web/controllers/AbstractDownloadController.java 2010-02-15 13:30:56 UTC (rev 499)
@@ -8,9 +8,12 @@
import javax.servlet.http.HttpServletResponse;
import org.cipres.treebase.TreebaseUtil;
+import org.cipres.treebase.domain.admin.UserRole.TBPermission;
import org.cipres.treebase.domain.nexus.NexusService;
import org.cipres.treebase.domain.study.Study;
import org.cipres.treebase.domain.study.StudyService;
+import org.cipres.treebase.domain.study.Submission;
+import org.cipres.treebase.domain.study.SubmissionService;
import org.cipres.treebase.web.util.ControllerUtil;
import org.cipres.treebase.web.util.WebUtil;
import org.springframework.web.servlet.mvc.Controller;
@@ -22,6 +25,7 @@
protected static final int FORMAT_RDF = 3;
private NexusService mNexmlService;
private NexusService mRdfaService;
+ private SubmissionService mSubmissionService;
private static String mNexmlContentType = "application/xml";
private static String mRdfContentType = "application/rdf+xml";
@@ -122,7 +126,7 @@
* @param downloadDirName
*/
protected void generateAFileDynamically(HttpServletRequest request, HttpServletResponse response, long objectId) {
- if ( ! ControllerUtil.isReviewerAccessGranted(request) && ! getStudy(objectId,request).isPublished() ) {
+ if ( ! isSubmitter(objectId,request) && ! ControllerUtil.isReviewerAccessGranted(request) && ! getStudy(objectId,request).isPublished() ) {
response.setStatus(HttpServletResponse.SC_SEE_OTHER);
response.setHeader("Location", "/treebase-web/accessviolation.html");
}
@@ -152,6 +156,18 @@
}
}
}
+
+ private boolean isSubmitter (long objectId,HttpServletRequest request) {
+ Study study = getStudy(objectId,request);
+ Submission submission = study.getSubmission();
+ TBPermission tbp = getSubmissionService().getPermission(request.getRemoteUser(), submission.getId());
+ if (tbp == TBPermission.WRITE || tbp == TBPermission.READ_ONLY || tbp == TBPermission.SUBMITTED_WRITE) {
+ return true;
+ }
+ else {
+ return false;
+ }
+ }
/**
*
@@ -176,5 +192,13 @@
public void setRdfaService(NexusService rdfaService) {
mRdfaService = rdfaService;
}
+
+ public void setSubmissionService(SubmissionService submissionService) {
+ mSubmissionService = submissionService;
+ }
+
+ public SubmissionService getSubmissionService() {
+ return mSubmissionService;
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|