Miscellaneous changes about applications and configuration files services.
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package org.cerberus.controllers;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonView;
|
||||
import org.cerberus.core.exceptions.UnauthorizedException;
|
||||
import org.cerberus.entities.dto.View;
|
||||
import org.cerberus.entities.persistence.Application;
|
||||
import org.cerberus.entities.persistence.User;
|
||||
@@ -19,7 +20,6 @@ import static org.cerberus.services.DaemonHandlingService.Action.*;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/applications")
|
||||
@SuppressWarnings("unused")
|
||||
public class ApplicationController {
|
||||
private ApplicationService service;
|
||||
private SecurityService securityService;
|
||||
@@ -39,8 +39,10 @@ public class ApplicationController {
|
||||
@GetMapping
|
||||
@JsonView({View.ApplicationDTO.class})
|
||||
public List<Application> findAll(Principal connectedUser) {
|
||||
securityService.getAdminUser(connectedUser);
|
||||
return service.findAll();
|
||||
User user = securityService.getUserByPrincipal(connectedUser)
|
||||
.orElseThrow(() -> new UnauthorizedException(""));
|
||||
|
||||
return service.findAll(user);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
|
||||
@@ -9,6 +9,7 @@ import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.security.Principal;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.cerberus.core.constant.RoleSecurity.ADMIN;
|
||||
@@ -16,7 +17,6 @@ import static org.cerberus.core.constant.RoleSecurity.MAINTAINER;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/applications/{applicationId}/configurationFile")
|
||||
@SuppressWarnings("unused")
|
||||
public class ConfigurationFileController {
|
||||
private ConfigurationFileService service;
|
||||
private SecurityService securityService;
|
||||
@@ -36,6 +36,18 @@ public class ConfigurationFileController {
|
||||
return service.findByApplicationIdAndId(applicationId, configurationFileId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the configuration files associates to the application that id is given in parameters.
|
||||
* @return The configuration files but without their content.
|
||||
*/
|
||||
@GetMapping
|
||||
@JsonView({View.ConfigurationFileDTO.class})
|
||||
public List<ConfigurationFile> getAllByApplication(@PathVariable("applicationId") UUID applicationId,
|
||||
Principal connectedUser) {
|
||||
securityService.checkHasAnyRole(connectedUser, applicationId, ADMIN, MAINTAINER);
|
||||
return service.findAllByApplicationId(applicationId);
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
@JsonView({View.ConfigurationFileDTO.class})
|
||||
public ConfigurationFile create(@PathVariable("applicationId") UUID applicationId,
|
||||
|
||||
@@ -8,7 +8,7 @@ public enum ResultCode {
|
||||
|
||||
private int val;
|
||||
|
||||
private ResultCode(final int pVal) {
|
||||
ResultCode(final int pVal) {
|
||||
val = pVal;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,5 @@ package org.cerberus.core.constant;
|
||||
|
||||
public enum Role {
|
||||
VIEWER,
|
||||
MAINTAINER;
|
||||
MAINTAINER
|
||||
}
|
||||
|
||||
@@ -11,4 +11,9 @@ abstract class BusinessException extends RuntimeException {
|
||||
BusinessException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
|
||||
@Override
|
||||
public StackTraceElement[] getStackTrace() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.cerberus.core.exceptions;
|
||||
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||
|
||||
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
|
||||
public class UnauthorizedException extends BusinessException {
|
||||
public UnauthorizedException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public UnauthorizedException(String message, Throwable cause) {
|
||||
super(message, cause);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Repository
|
||||
@@ -15,4 +16,7 @@ public interface ApplicationRepository extends JpaRepository<Application, UUID>
|
||||
|
||||
@Query(value = "SELECT EXISTS(SELECT id FROM application WHERE service_name = :serviceName)", nativeQuery = true)
|
||||
boolean existsByServiceName(@Param("serviceName") String serviceName);
|
||||
|
||||
@Query("SELECT a FROM Application a JOIN a.administratorList adm WHERE adm.user.id = :userId")
|
||||
List<Application> getByUserId(@Param("userId") UUID userId);
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Repository
|
||||
@@ -18,4 +19,7 @@ public interface ConfigurationFileRepository extends JpaRepository<Configuration
|
||||
"AND application_id = :applicationId)", nativeQuery = true)
|
||||
boolean doesBelongToApplication(@Param("configurationFileId") UUID configurationFileId,
|
||||
@Param("applicationId") UUID applicationId);
|
||||
|
||||
@Query("SELECT cf FROM ConfigurationFile cf WHERE cf.application.id = :applicationId")
|
||||
List<ConfigurationFile> findAllByApplicationId(@Param("applicationId") UUID applicationId);
|
||||
}
|
||||
|
||||
@@ -16,10 +16,10 @@ import static org.cerberus.core.utils.StringUtils.concat;
|
||||
|
||||
@Service
|
||||
public class ApplicationService extends AbstractService<Application> {
|
||||
private ApplicationRepository repository;
|
||||
private ApplicationRoleService applicationRoleService;
|
||||
private ApplicationValidator validator;
|
||||
private DaemonHandlingService daemonHandlingService;
|
||||
private final ApplicationRepository repository;
|
||||
private final ApplicationRoleService applicationRoleService;
|
||||
private final ApplicationValidator validator;
|
||||
private final DaemonHandlingService daemonHandlingService;
|
||||
|
||||
ApplicationService(ApplicationRepository repository,
|
||||
ApplicationRoleService applicationRoleService,
|
||||
@@ -35,6 +35,7 @@ public class ApplicationService extends AbstractService<Application> {
|
||||
@Transactional
|
||||
public Application create(Application application, User user) {
|
||||
validator.validate(application);
|
||||
validator.sanitize(application);
|
||||
|
||||
if(repository.existsByName(application.getName())) {
|
||||
throw new BadRequestException(concat("The application ", application.getName(), " already exists."));
|
||||
@@ -78,7 +79,15 @@ public class ApplicationService extends AbstractService<Application> {
|
||||
return daemonHandlingService.getStatus(findByIdOrElseThrow(applicationId));
|
||||
}
|
||||
|
||||
public List<Application> findAll() {
|
||||
return repository.findAll();
|
||||
public List<Application> findAll(User user) {
|
||||
List<Application> result;
|
||||
|
||||
if(user.isAdmin()) {
|
||||
result = repository.findAll();
|
||||
} else {
|
||||
result = repository.getByUserId(user.getId());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static org.cerberus.core.utils.StringUtils.concat;
|
||||
@@ -46,6 +47,18 @@ public class ConfigurationFileService extends AbstractService<ConfigurationFile>
|
||||
return configurationFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all the configuration files associates to the application that id is given in parameters.
|
||||
* @return The configuration files but without their content.
|
||||
*/
|
||||
public List<ConfigurationFile> findAllByApplicationId(UUID applicationId) {
|
||||
if(!applicationService.existsById(applicationId)) {
|
||||
throwNotFoundException();
|
||||
}
|
||||
|
||||
return repository.findAllByApplicationId(applicationId);
|
||||
}
|
||||
|
||||
public ConfigurationFile create(UUID applicationId, ConfigurationFile configurationFile) {
|
||||
return save(applicationId, configurationFile, false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user