use of org.springframework.web.bind.annotation.PathVariable in project alien4cloud by alien4cloud.
the class ServiceSecurityController method getAuthorizedEnvironmentsPerApplication.
/**
* List all environments per application authorised to access the location.
*
* @return list of all environments per application.
*/
@ApiOperation(value = "List all applications, environments and environment types authorized to access the service resource", notes = "Only user with ADMIN role can list authorized applications, environments and environment types for the location.")
@RequestMapping(value = "/environmentsPerApplication", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAuthority('ADMIN')")
public RestResponse<List<ApplicationEnvironmentAuthorizationDTO>> getAuthorizedEnvironmentsPerApplication(@PathVariable String serviceId) {
ServiceResource service = serviceResourceService.getOrFail(serviceId);
List<Application> applicationsRelatedToEnvironment = Lists.newArrayList();
List<Application> applicationsRelatedToEnvironmentType = Lists.newArrayList();
List<ApplicationEnvironment> environments = Lists.newArrayList();
List<String> environmentTypes = Lists.newArrayList();
List<Application> applications = Lists.newArrayList();
if (service.getEnvironmentPermissions() != null && service.getEnvironmentPermissions().size() > 0) {
environments = alienDAO.findByIds(ApplicationEnvironment.class, service.getEnvironmentPermissions().keySet().toArray(new String[service.getEnvironmentPermissions().size()]));
Set<String> environmentApplicationIds = environments.stream().map(ae -> ae.getApplicationId()).collect(Collectors.toSet());
applicationsRelatedToEnvironment = alienDAO.findByIds(Application.class, environmentApplicationIds.toArray(new String[environmentApplicationIds.size()]));
}
if (service.getEnvironmentTypePermissions() != null && service.getEnvironmentTypePermissions().size() > 0) {
environmentTypes.addAll(service.getEnvironmentTypePermissions().keySet());
Set<String> environmentTypeApplicationIds = Sets.newHashSet();
for (String envType : safe(service.getEnvironmentTypePermissions()).keySet()) {
environmentTypeApplicationIds.add(envType.split(":")[0]);
}
applicationsRelatedToEnvironmentType = alienDAO.findByIds(Application.class, environmentTypeApplicationIds.toArray(new String[environmentTypeApplicationIds.size()]));
}
if (service.getApplicationPermissions() != null && service.getApplicationPermissions().size() > 0) {
applications = alienDAO.findByIds(Application.class, service.getApplicationPermissions().keySet().toArray(new String[service.getApplicationPermissions().size()]));
}
List<ApplicationEnvironmentAuthorizationDTO> result = ApplicationEnvironmentAuthorizationDTO.buildDTOs(applicationsRelatedToEnvironment, applicationsRelatedToEnvironmentType, environments, applications, environmentTypes);
return RestResponseBuilder.<List<ApplicationEnvironmentAuthorizationDTO>>builder().data(result).build();
}
use of org.springframework.web.bind.annotation.PathVariable in project alien4cloud by alien4cloud.
the class ServiceSecurityController method revokeApplicationAccess.
/**
*****************************************************************************************************************************
*
* SECURITY ON APPLICATIONS
*
******************************************************************************************************************************
*/
/**
* Revoke the application's authorisation to access the location (including all related environments and environment types).
*
* @param serviceId The id of the location.
* @param applicationId The authorized application.
* @return A {@link Void} {@link RestResponse}.
*/
@ApiOperation(value = "Revoke the application's authorisation to access the service resource", notes = "Only user with ADMIN role can revoke access to the location.")
@RequestMapping(value = "/applications/{applicationId}", method = RequestMethod.DELETE, produces = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("hasAuthority('ADMIN')")
@Audit
public synchronized RestResponse<Void> revokeApplicationAccess(@PathVariable String serviceId, @PathVariable String applicationId) {
ServiceResource service = serviceResourceService.getOrFail(serviceId);
resourcePermissionService.revokePermission(service, Subject.APPLICATION, applicationId);
// remove all environments related to this application
ApplicationEnvironment[] aes = applicationEnvironmentService.getByApplicationId(applicationId);
String[] envIds = Arrays.stream(aes).map(ae -> ae.getId()).toArray(String[]::new);
resourcePermissionService.revokePermission(service, Subject.ENVIRONMENT, envIds);
// remove all environments types related to this application
Set<String> envTypeIds = Sets.newHashSet();
for (String envType : safe(service.getEnvironmentTypePermissions()).keySet()) {
if (envType.contains(applicationId)) {
envTypeIds.add(envType);
}
}
resourcePermissionService.revokePermission(service, Subject.ENVIRONMENT_TYPE, envTypeIds.toArray(new String[envTypeIds.size()]));
return RestResponseBuilder.<Void>builder().build();
}
use of org.springframework.web.bind.annotation.PathVariable in project cas by apereo.
the class UmaUpdatePolicyForResourceSetEndpointController method updatePoliciesForResourceSet.
/**
* Update policy for resource set.
*
* @param resourceId the resource id
* @param policyId the policy id
* @param body the body
* @param request the request
* @param response the response
* @return the policy for resource set
*/
@PutMapping(value = '/' + OAuth20Constants.BASE_OAUTH20_URL + "/{resourceId}/" + OAuth20Constants.UMA_POLICY_URL + "/{policyId}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity updatePoliciesForResourceSet(@PathVariable(value = "resourceId") final long resourceId, @PathVariable(value = "policyId") final long policyId, @RequestBody final String body, final HttpServletRequest request, final HttpServletResponse response) {
try {
val profileResult = getAuthenticatedProfile(request, response, OAuth20Constants.UMA_PROTECTION_SCOPE);
val resourceSetResult = getUmaConfigurationContext().getUmaResourceSetRepository().getById(resourceId);
if (resourceSetResult.isEmpty()) {
val model = buildResponseEntityErrorModel(HttpStatus.NOT_FOUND, "Requested resource-set cannot be found");
return new ResponseEntity(model, model, HttpStatus.BAD_REQUEST);
}
val resourceSet = resourceSetResult.get();
resourceSet.validate(profileResult);
val umaRequest = MAPPER.readValue(JsonValue.readHjson(body).toString(), ResourceSetPolicy.class);
val policyResult = resourceSet.getPolicies().stream().filter(p -> p.getId() == policyId).findFirst();
if (policyResult.isPresent()) {
val policy = policyResult.get();
policy.setPermissions(umaRequest.getPermissions());
val currentPolicies = resourceSet.getPolicies().stream().filter(p -> p.getId() != policyId).collect(Collectors.toSet());
currentPolicies.add(policy);
resourceSet.setPolicies(new HashSet<>(currentPolicies));
getUmaConfigurationContext().getUmaResourceSetRepository().save(resourceSet);
val model = CollectionUtils.wrap("entity", resourceSet, "code", HttpStatus.FOUND);
return new ResponseEntity(model, HttpStatus.OK);
}
val model = CollectionUtils.wrap("code", HttpStatus.NOT_FOUND);
return new ResponseEntity(model, HttpStatus.OK);
} catch (final Exception e) {
LoggingUtils.error(LOGGER, e);
}
return new ResponseEntity("Unable to locate resource-set.", HttpStatus.BAD_REQUEST);
}
use of org.springframework.web.bind.annotation.PathVariable in project mica2 by obiba.
the class NetworkController method network.
@GetMapping("/network/{id:.+}")
public ModelAndView network(@PathVariable String id, @RequestParam(value = "draft", required = false) String shareKey) {
Map<String, Object> params = newParameters();
Network network = getNetwork(id, shareKey);
params.put("network", network);
params.put("draft", !Strings.isNullOrEmpty(shareKey));
List<Network> networks = publishedNetworkService.findByIds(network.getNetworkIds());
params.put("networks", networks.stream().filter(n -> subjectAclService.isAccessible("/network", n.getId())).collect(Collectors.toList()));
List<BaseStudy> studies = publishedStudyService.findByIds(network.getStudyIds());
List<BaseStudy> individualStudies = studies.stream().filter(s -> (s instanceof Study) && subjectAclService.isAccessible("/individual-study", s.getId())).collect(Collectors.toList());
params.put("individualStudies", individualStudies);
List<BaseStudy> harmonizationStudies = studies.stream().filter(s -> (s instanceof HarmonizationStudy) && subjectAclService.isAccessible("/harmonization-study", s.getId())).collect(Collectors.toList());
params.put("harmonizationStudies", harmonizationStudies);
Map<String, LocalizedString> studyAcronyms = studies.stream().collect(Collectors.toMap(AbstractGitPersistable::getId, BaseStudy::getAcronym));
params.put("studyAcronyms", studyAcronyms);
List<String> ids = individualStudies.stream().map(AbstractGitPersistable::getId).collect(Collectors.toList());
ids.addAll(harmonizationStudies.stream().map(AbstractGitPersistable::getId).collect(Collectors.toList()));
if (!ids.isEmpty()) {
params.put("affiliatedMembersQuery", "studyMemberships.parentId:(" + Joiner.on(" OR ").join(ids) + ")");
}
Map<String, List<Membership>> membershipMap = personService.getNetworkMembershipMap(network.getId());
network.setMemberships(personService.setMembershipOrder(network.getMembershipSortOrder(), membershipMap));
return new ModelAndView("network", params);
}
use of org.springframework.web.bind.annotation.PathVariable in project ArachneCentralAPI by OHDSI.
the class BaseSubmissionController method getResultFiles.
@ApiOperation("Get result files of the submission.")
@GetMapping("/api/v1/analysis-management/submissions/{submissionId}/results")
public List<ResultFileDTO> getResultFiles(Principal principal, @PathVariable("submissionId") Long submissionId, @RequestParam(value = "path", required = false, defaultValue = "") String path, @RequestParam(value = "real-name", required = false) String realName) throws PermissionDeniedException, IOException {
IUser user = userService.getByUsername(principal.getName());
ResultFileSearch resultFileSearch = new ResultFileSearch();
resultFileSearch.setPath(path);
resultFileSearch.setRealName(realName);
List<? extends ArachneFileMeta> resultFileList = submissionService.getResultFiles(user, submissionId, resultFileSearch);
String resultFilesPath = contentStorageHelper.getResultFilesDir(Submission.class, submissionId, null);
return resultFileList.stream().map(rf -> {
ResultFileDTO rfDto = conversionService.convert(rf, ResultFileDTO.class);
rfDto.setSubmissionId(submissionId);
rfDto.setRelativePath(contentStorageHelper.getRelativePath(resultFilesPath, rfDto.getPath()));
return rfDto;
}).collect(Collectors.toList());
}
Aggregations