diff --git a/Dockerfile_Auth b/Dockerfile_Auth new file mode 100644 index 0000000..99d5878 --- /dev/null +++ b/Dockerfile_Auth @@ -0,0 +1,17 @@ +FROM openjdk:8 AS gradle-builder + +WORKDIR /app + +COPY . . + +WORKDIR authorization + +RUN ../gradlew build + +FROM openjdk:8-jre + +WORKDIR /root/ + +COPY --from=gradle-builder /app/authorization/build/libs/authorization-0.0.1-SNAPSHOT.jar . + +CMD ["java","-jar","authorization-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/Dockerfile_Comm b/Dockerfile_Comm new file mode 100644 index 0000000..8777775 --- /dev/null +++ b/Dockerfile_Comm @@ -0,0 +1,17 @@ +FROM openjdk:8 AS gradle-builder + +WORKDIR /app + +COPY . . + +WORKDIR communication + +RUN ../gradlew build + +FROM openjdk:8-jre + +WORKDIR /root/ + +COPY --from=gradle-builder /app/communication/build/libs/communication-0.0.1-SNAPSHOT.jar . + +CMD ["java","-jar","communication-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/Dockerfile_Config_Server b/Dockerfile_Config_Server new file mode 100644 index 0000000..60b0350 --- /dev/null +++ b/Dockerfile_Config_Server @@ -0,0 +1,17 @@ +FROM openjdk:8 AS gradle-builder + +WORKDIR /app + +COPY . . + +WORKDIR config-server + +RUN ../gradlew build + +FROM openjdk:8-jre + +WORKDIR /root/ + +COPY --from=gradle-builder /app/config-server/build/libs/config-server-0.0.1-SNAPSHOT.jar . + +CMD ["java","-jar","config-server-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/Dockerfile_Eureka_Server b/Dockerfile_Eureka_Server new file mode 100644 index 0000000..e62c92f --- /dev/null +++ b/Dockerfile_Eureka_Server @@ -0,0 +1,17 @@ +FROM openjdk:8 AS gradle-builder + +WORKDIR /app + +COPY . . + +WORKDIR eureka-server + +RUN ../gradlew build + +FROM openjdk:8-jre + +WORKDIR /root/ + +COPY --from=gradle-builder /app/eureka-server/build/libs/eureka-server-0.0.1-SNAPSHOT.jar . + +CMD ["java","-jar","eureka-server-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/Dockerfile_Zuul_Server b/Dockerfile_Zuul_Server new file mode 100644 index 0000000..b6971ba --- /dev/null +++ b/Dockerfile_Zuul_Server @@ -0,0 +1,17 @@ +FROM openjdk:8 AS gradle-builder + +WORKDIR /app + +COPY . . + +WORKDIR zuul-server + +RUN ../gradlew build + +FROM openjdk:8-jre + +WORKDIR /root/ + +COPY --from=gradle-builder /app/zuul-server/build/libs/zuul-server-0.0.1-SNAPSHOT.jar . + +CMD ["java","-jar","zuul-server-0.0.1-SNAPSHOT.jar"] \ No newline at end of file diff --git a/README.md b/README.md index 663e7ee..cb6f09c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +#INFRA +## Hour 1 +- [X] (2pt) Create a dockerfile for each projects in `settings.gradle` +- [ ] (1pt) Create a gradle task to build all docker, the task could look like `./gradlew clean build buildDocker -x test` +- [ ] (0.5pt) Create a gradle task to build single docker images when you are working in only one module +- [X] (2pt) Create a docker-compose version 3+ file to orchestrate de booting of all modules + + # Java micro-services ## Build diff --git a/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java b/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java index dbfa0d8..95b0272 100644 --- a/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java +++ b/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; +import static com.ship.authorization.service.UsersService.GetRank; import static com.ship.authorization.service.UsersService.ROLE_ADMIRAL; import static com.ship.authorization.service.UsersService.ROLE_CREWMAN; @@ -40,7 +41,7 @@ public void checkAccess(Authentication authentication, @RequestBody ActionDto ac for (GrantedAuthority grantedAuthority : userDetails.getAuthorities()){ if (grantedAuthority.getAuthority().equals(ROLE_CREWMAN)) { - if (recipientRole.contains(ROLE_ADMIRAL)) { + if (GetRank(recipientRole) - 1 >= 2) { throw new ForbiddenAccessException(); } } diff --git a/authorization/src/main/java/com/ship/authorization/service/UsersService.java b/authorization/src/main/java/com/ship/authorization/service/UsersService.java index 66615d5..747534e 100644 --- a/authorization/src/main/java/com/ship/authorization/service/UsersService.java +++ b/authorization/src/main/java/com/ship/authorization/service/UsersService.java @@ -16,6 +16,24 @@ public class UsersService { public static final String ROLE_ENSIGN = "ROLE_ENSIGN"; public static final String ROLE_CREWMAN = "ROLE_CREWMAN"; + public static final int GetRank(String role) { + if (role.equals(ROLE_ADMIRAL)) { + return 7; + } else if (role.equals(ROLE_VICE_ADMIRAL)) { + return 6; + } else if (role.equals(ROLE_CAPTAIN)) { + return 5; + } else if (role.equals(ROLE_COMMANDER)) { + return 4; + } else if (role.equals(ROLE_LIEUTENANT)) { + return 3; + } else if (role.equals(ROLE_ENSIGN)) { + return 2; + } else { + return 1; + } + } + private Map users = new HashMap<>(); public UsersService() { diff --git a/config-server/src/main/resources/application.yml b/config-server/src/main/resources/application.yml index 8a7b0bc..ac93128 100644 --- a/config-server/src/main/resources/application.yml +++ b/config-server/src/main/resources/application.yml @@ -18,7 +18,7 @@ security.user: --- spring: profiles: native - cloud.config.server.native.search-locations: file:///${user.home}/Documents/wilau2/cs-games-2018-relay-cloud/config-server/config + cloud.config.server.native.search-locations: file:///${user.home}/git/csgames/infra-perso/config-server/config eureka: client: diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..05f6b7d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,48 @@ +version: "3" +services: + authorization: + build: + context: ./ + dockerfile: Dockerfile_Auth + ports: + - 8090:8090 + + communication: + build: + context: ./ + dockerfile: Dockerfile_Comm + ports: + - 8100:8100 + + config-server: + build: + context: ./ + dockerfile: Dockerfile_Config_Server + ports: + - 8888:8888 + depends_on: + - redis + + eureka-server: + build: + context: ./ + dockerfile: Dockerfile_Eureka_Server + ports: + - 8082:8082 + depends_on: + - config-server + + zuul-server: + build: + context: ./ + dockerfile: Dockerfile_Zuul_Server + ports: + - 9090:9090 + depends_on: + - authorization + - communication + + redis: + image: redis + ports: + - 6379:6379 \ No newline at end of file