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