diff --git a/src/main/java/eu/dnetlib/repo/manager/config/AaiSecurityConfiguration.java b/src/main/java/eu/dnetlib/repo/manager/config/AaiSecurityConfiguration.java index 563eb4b..0124dee 100644 --- a/src/main/java/eu/dnetlib/repo/manager/config/AaiSecurityConfiguration.java +++ b/src/main/java/eu/dnetlib/repo/manager/config/AaiSecurityConfiguration.java @@ -63,6 +63,7 @@ public class AaiSecurityConfiguration extends WebSecurityConfigurerAdapter { .csrf().disable() .authorizeRequests() .regexMatchers("/actuator/.*").permitAll() + .regexMatchers("/repository/.*/metrics/?.*").permitAll() .regexMatchers("/metrics").permitAll() .antMatchers("/api-docs/**","/swagger-ui/**").permitAll() .anyRequest().authenticated() diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/PiWikController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/PiWikController.java index 7bb96e9..985c60e 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/PiWikController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/PiWikController.java @@ -39,16 +39,6 @@ public class PiWikController { @Autowired private PiWikServiceImpl piWikService; - @RequestMapping(value = "/validated", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) - @ResponseBody - public Boolean isPiwikValidated(@RequestParam("repositoryId") String repositoryId) { - PiwikInfo info = piWikService.getPiwikSiteForRepo(repositoryId); - if (info != null) { - return info.isValidated(); - } - return false; - } - @RequestMapping(value = "/getPiwikSiteForRepo/{repositoryId}" , method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE) @ResponseBody @PreAuthorize("hasAnyAuthority('SUPER_ADMINISTRATOR', 'CONTENT_PROVIDER_DASHBOARD_ADMINISTRATOR') or @authorizationService.isMemberOf(#repositoryId) or (@repositoryService.getRepositoryById(#repositoryId).registeredby==null and hasAuthority('REGISTERED_USER'))") diff --git a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java index 5702eb2..d36a915 100644 --- a/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java +++ b/src/main/java/eu/dnetlib/repo/manager/controllers/RepositoryController.java @@ -1,5 +1,6 @@ package eu.dnetlib.repo.manager.controllers; +import eu.dnetlib.domain.data.PiwikInfo; import eu.dnetlib.enabling.datasources.common.AggregationInfo; import eu.dnetlib.repo.manager.domain.*; import eu.dnetlib.repo.manager.domain.dto.RepositoryTerms; @@ -7,6 +8,8 @@ import eu.dnetlib.repo.manager.domain.dto.User; import eu.dnetlib.repo.manager.exception.RepositoryServiceException; import eu.dnetlib.repo.manager.exception.ResourceNotFoundException; import eu.dnetlib.repo.manager.service.AggregationService; +import eu.dnetlib.repo.manager.service.PiWikService; +import eu.dnetlib.repo.manager.service.PiWikServiceImpl; import eu.dnetlib.repo.manager.service.RepositoryService; import eu.dnetlib.repo.manager.service.security.AuthorizationService; import eu.dnetlib.repo.manager.utils.JsonUtils; @@ -43,12 +46,17 @@ public class RepositoryController { private final AuthorizationService authorizationService; + private final PiWikService piWikService; + @Autowired RepositoryController(RepositoryService repositoryService, - AggregationService aggregationService, AuthorizationService authorizationService) { + AggregationService aggregationService, + AuthorizationService authorizationService, + PiWikService piWikService) { this.repositoryService = repositoryService; this.aggregationService = aggregationService; this.authorizationService = authorizationService; + this.piWikService = piWikService; } @RequestMapping(value = "/countries", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @@ -295,4 +303,26 @@ public class RepositoryController { authorizationService.removeAdmin(id, email); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////////////////////////////////////// + + /** + * Returns whether the Piwik Site of a repository is enabled and validated. + */ + @RequestMapping(value = "{repositoryId}/metrics/valid", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) + public boolean getMetricsEnabledAndValidated(@PathVariable("repositoryId") String repositoryId) { + PiwikInfo info = piWikService.getPiwikSiteForRepo(repositoryId); + return info != null && info.isValidated(); + } + + /** + * Returns repository Metrics. + */ + @RequestMapping(value = "{repositoryId}/metrics", method = RequestMethod.GET, + produces = MediaType.APPLICATION_JSON_VALUE) + public MetricsInfo getMetricsInfo(@PathVariable("repositoryId") String id) throws RepositoryServiceException { + return repositoryService.getMetricsInfoForRepository(id); + } + }