diff --git a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/resource/UlkopuolisetController.java b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/resource/UlkopuolisetController.java index e7cd6db39b..1ea6368d53 100644 --- a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/resource/UlkopuolisetController.java +++ b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/resource/UlkopuolisetController.java @@ -64,6 +64,6 @@ public ResponseEntity getOrganisaatioRyhmatByOid(@PathVariable(value = @RequestMapping(value = "/organisaatiovirkailijat/{oid}", method = GET) @ResponseBody public ResponseEntity getOrganisaatioVirkailijat(@PathVariable(value = "oid") final String oid) { - return new ResponseEntity<>(kayttajanTietoService.getOrganisaatioVirkailijat(Sets.newHashSet(oid)), HttpStatus.OK); + return new ResponseEntity<>(kayttajanTietoService.getOrganisaatioVirkailijat(oid), HttpStatus.OK); } } diff --git a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/KayttajanTietoService.java b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/KayttajanTietoService.java index 856c872c49..3f6c9561d8 100644 --- a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/KayttajanTietoService.java +++ b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/KayttajanTietoService.java @@ -49,6 +49,6 @@ public interface KayttajanTietoService { @PreAuthorize("isAuthenticated()") KayttajanProjektitiedotDto haePerusteprojekti(String oid, Long projektiId); - @PreAuthorize("isAuthenticated()") - JsonNode getOrganisaatioVirkailijat(Set organisaatioOids); + @PreAuthorize("hasPermission(#organisaatioOid, 'organisaatio', new String[]{'LUKU'})") + JsonNode getOrganisaatioVirkailijat(String organisaatioOid); } diff --git a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/impl/KayttajanTietoServiceImpl.java b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/impl/KayttajanTietoServiceImpl.java index dad84c702e..412bf562b9 100644 --- a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/impl/KayttajanTietoServiceImpl.java +++ b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/impl/KayttajanTietoServiceImpl.java @@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.collect.Sets; import fi.vm.sade.eperusteet.domain.Perusteprojekti; import fi.vm.sade.eperusteet.dto.kayttaja.KayttajanProjektitiedotDto; import fi.vm.sade.eperusteet.dto.kayttaja.KayttajanTietoDto; @@ -224,12 +225,12 @@ public KayttajanProjektitiedotDto haePerusteprojekti(String oid, Long projektiId } @Override - public JsonNode getOrganisaatioVirkailijat(Set organisaatioOids) { + public JsonNode getOrganisaatioVirkailijat(String organisaatioOid) { OphHttpClient client = restClientFactory.get(koServiceUrl, true); String url = koServiceUrl + VIRKAILIJA_HAKU; Map criteria = new HashMap<>(); - criteria.put("organisaatioOids", organisaatioOids); + criteria.put("organisaatioOids", Sets.newHashSet(organisaatioOid)); criteria.put("duplikaatti", false); criteria.put("passivoitu", false); diff --git a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionEvaluator.java b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionEvaluator.java index f5c782231e..be369180bf 100644 --- a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionEvaluator.java +++ b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionEvaluator.java @@ -19,6 +19,7 @@ import fi.vm.sade.eperusteet.domain.ReferenceableEntity; import fi.vm.sade.eperusteet.service.security.PermissionManager.Permission; import fi.vm.sade.eperusteet.service.security.PermissionManager.Target; +import java.util.UUID; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; diff --git a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionManager.java b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionManager.java index 26b9748d24..73cfd24185 100644 --- a/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionManager.java +++ b/eperusteet/eperusteet-service/src/main/java/fi/vm/sade/eperusteet/service/security/PermissionManager.java @@ -98,7 +98,8 @@ public enum Target { PERUSTEENOSA("perusteenosa"), TUTKINNONOSAVIITE("tutkinnonosaviite"), PERUSTEENOSAVIITE("perusteenosaviite"), - TIEDOTE("tiedote"); + TIEDOTE("tiedote"), + ORGANISAATIO("organisaatio"); private final String target; @@ -317,6 +318,18 @@ public String toString() { allowedRolesTmp.put(Target.ARVIOINTIASTEIKKO, tmp); } + // Organisaatio + { + Map>> tmp = new IdentityHashMap<>(); + Map> perm = Maps.newHashMap(); + perm.put(LUONTI, r0); + perm.put(LUKU, r3); + perm.put(MUOKKAUS, r0); + perm.put(POISTO, r0); + tmp.put(null, perm); + allowedRolesTmp.put(Target.ORGANISAATIO, tmp); + } + if (LOG.isTraceEnabled()) { assert (allowedRolesTmp.keySet().containsAll(EnumSet.allOf(Target.class))); for (Map.Entry>>> t : allowedRolesTmp.entrySet()) { @@ -357,6 +370,10 @@ public boolean hasPermission(Authentication authentication, Serializable targetI return hasAnyRole(authentication, getAllowedRoles(targetType, permission)); } + if (Target.ORGANISAATIO.equals(targetType)) { + return hasAnyRole(authentication, String.valueOf(targetId), getAllowedRoles(targetType, permission)); + } + if (Target.TUTKINNONOSAVIITE.equals(targetType)) { // Haetaan perusteen osa mihin viitataan osaviitteessä ja jatketaan luvan tutkimista perusteen osan tiedoilla. TutkinnonOsaViite t = viiteRepository.findOne((Long) targetId); diff --git a/eperusteet/eperusteet-service/src/test/java/fi/vm/sade/eperusteet/service/util/KayttajanTietoServiceMock.java b/eperusteet/eperusteet-service/src/test/java/fi/vm/sade/eperusteet/service/util/KayttajanTietoServiceMock.java index adbd4aed45..282b590379 100644 --- a/eperusteet/eperusteet-service/src/test/java/fi/vm/sade/eperusteet/service/util/KayttajanTietoServiceMock.java +++ b/eperusteet/eperusteet-service/src/test/java/fi/vm/sade/eperusteet/service/util/KayttajanTietoServiceMock.java @@ -66,7 +66,7 @@ public List haeKayttajatiedot(List oid) { } @Override - public JsonNode getOrganisaatioVirkailijat(Set organisaatioOids) { + public JsonNode getOrganisaatioVirkailijat(String organisaatioOids) { return null; }