Skip to content

Commit e64da72

Browse files
committed
Added REST endpoint to make studies public
Added REST endpoint to make studies public. It uses the PermissionService
1 parent 9d9478a commit e64da72

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

src/genophenbrowser-server/src/main/java/com/gmi/nordborglab/browser/server/controller/RestProviderController.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.gmi.nordborglab.browser.server.data.annotation.Tracks;
88
import com.gmi.nordborglab.browser.server.data.annotation.TracksData;
99
import com.gmi.nordborglab.browser.server.data.isatab.IsaTabExporter;
10+
import com.gmi.nordborglab.browser.server.domain.acl.PermissionPrincipal;
1011
import com.gmi.nordborglab.browser.server.domain.cdv.Study;
1112
import com.gmi.nordborglab.browser.server.domain.observation.Experiment;
1213
import com.gmi.nordborglab.browser.server.domain.phenotype.Trait;
@@ -19,12 +20,16 @@
1920
import com.gmi.nordborglab.browser.server.rest.PhenotypeData;
2021
import com.gmi.nordborglab.browser.server.rest.PhenotypeValue;
2122
import com.gmi.nordborglab.browser.server.rest.StudyGWASData;
23+
import com.gmi.nordborglab.browser.server.security.CustomAcl;
24+
import com.gmi.nordborglab.browser.server.security.CustomAccessControlEntry;
25+
import com.gmi.nordborglab.browser.server.security.CustomPermission;
2226
import com.gmi.nordborglab.browser.server.service.AnnotationDataService;
2327
import com.gmi.nordborglab.browser.server.service.CdvService;
2428
import com.gmi.nordborglab.browser.server.service.ExperimentService;
2529
import com.gmi.nordborglab.browser.server.service.GWASDataService;
2630
import com.gmi.nordborglab.browser.server.service.HelperService;
2731
import com.gmi.nordborglab.browser.server.service.MetaAnalysisService;
32+
import com.gmi.nordborglab.browser.server.service.PermissionService;
2833
import com.gmi.nordborglab.browser.server.service.TraitService;
2934
import com.gmi.nordborglab.browser.server.service.TraitUomService;
3035
import com.google.common.base.Function;
@@ -57,6 +62,7 @@
5762
import org.springframework.web.bind.annotation.RequestParam;
5863
import org.springframework.web.bind.annotation.ResponseBody;
5964
import org.springframework.web.bind.annotation.ResponseStatus;
65+
import org.springframework.security.acls.domain.GrantedAuthoritySid;
6066
import org.springframework.web.multipart.commons.CommonsMultipartFile;
6167

6268
import javax.annotation.Nullable;
@@ -97,6 +103,9 @@ public class RestProviderController {
97103
@Resource
98104
private GWASDataService gwasDataService;
99105

106+
@Resource
107+
private PermissionService permissionService;
108+
100109
@Resource
101110
private TaxonomyRepository taxonomyRepository;
102111

@@ -109,6 +118,25 @@ public class RestProviderController {
109118

110119
private static final Logger logger = LoggerFactory.getLogger(RestProviderController.class);
111120

121+
@RequestMapping(method = RequestMethod.POST, value = "/study/{id}/{isPublic}")
122+
public
123+
@ResponseBody
124+
void makeStudyPublic(@PathVariable("id") Long id, @PathVariable("isPublic") Boolean isPublic) {
125+
Experiment experiment = experimentService.findExperiment(id);
126+
CustomAcl customAcl = permissionService.getPermissions(experiment);
127+
List<CustomAccessControlEntry> entries = customAcl.getEntries();
128+
final String annonymousUser = "ROLE_ANONYMOUS";
129+
final PermissionPrincipal annonymousPrincipal = new PermissionPrincipal(annonymousUser, "", false, false);
130+
if (isPublic) {
131+
entries.add(new CustomAccessControlEntry(null,CustomPermission.READ.getMask(),true,annonymousPrincipal));
132+
}
133+
else {
134+
entries.removeIf(n -> (!n.getPrincipal().getIsUser() && n.getPrincipal().getId().equals(annonymousUser)));
135+
}
136+
customAcl.setEntries(entries);
137+
permissionService.updatePermissions(experiment, customAcl);
138+
}
139+
112140

113141
@RequestMapping(method = RequestMethod.GET, value = "/study/{id}/pvalues")
114142
public

0 commit comments

Comments
 (0)