diff --git a/README.md b/README.md index 663e7ee..069ad32 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,11 @@ # Java micro-services +BATTLESTARCONCORDIA_SERVICES_HOUR1 +- [x] Adds whitespace, rip + +^ + + ## Build build all projects ``` @@ -179,3 +185,4 @@ Centralize configuration for all micro services. - [Spring cloud bootstrap](https://github.com/eugenp/tutorials/tree/master/spring-cloud/spring-cloud-bootstrap) - [Securing cloud services](http://www.baeldung.com/spring-cloud-securing-services) + diff --git a/authorization/out/production/classes/com/ship/authorization/ActionDto.class b/authorization/out/production/classes/com/ship/authorization/ActionDto.class new file mode 100644 index 0000000..1c44ba2 Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/ActionDto.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/AuthorizationApplication.class b/authorization/out/production/classes/com/ship/authorization/AuthorizationApplication.class new file mode 100644 index 0000000..0805de1 Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/AuthorizationApplication.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/ForbiddenAccessException.class b/authorization/out/production/classes/com/ship/authorization/ForbiddenAccessException.class new file mode 100644 index 0000000..505b523 Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/ForbiddenAccessException.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/SecurityConfig.class b/authorization/out/production/classes/com/ship/authorization/SecurityConfig.class new file mode 100644 index 0000000..4d54313 Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/SecurityConfig.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/SessionConfig.class b/authorization/out/production/classes/com/ship/authorization/SessionConfig.class new file mode 100644 index 0000000..aafc06d Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/SessionConfig.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/controller/AuthorizationController.class b/authorization/out/production/classes/com/ship/authorization/controller/AuthorizationController.class new file mode 100644 index 0000000..82a7734 Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/controller/AuthorizationController.class differ diff --git a/authorization/out/production/classes/com/ship/authorization/service/UsersService.class b/authorization/out/production/classes/com/ship/authorization/service/UsersService.class new file mode 100644 index 0000000..242f9fb Binary files /dev/null and b/authorization/out/production/classes/com/ship/authorization/service/UsersService.class differ diff --git a/authorization/out/production/resources/bootstrap.yml b/authorization/out/production/resources/bootstrap.yml new file mode 100644 index 0000000..4f2cc3c --- /dev/null +++ b/authorization/out/production/resources/bootstrap.yml @@ -0,0 +1,12 @@ +spring.cloud.config: + name: authorization + username: configUser + password: configPassword + +--- +spring.profiles: native +spring.cloud.config.uri: http://localhost:8888 + +--- +spring.profiles: docker +spring.cloud.config.uri: http://config-server:8888 \ No newline at end of file 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..725f14e 100644 --- a/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java +++ b/authorization/src/main/java/com/ship/authorization/controller/AuthorizationController.java @@ -21,8 +21,7 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; -import static com.ship.authorization.service.UsersService.ROLE_ADMIRAL; -import static com.ship.authorization.service.UsersService.ROLE_CREWMAN; +import static com.ship.authorization.service.UsersService.*; @RestController public class AuthorizationController { @@ -40,7 +39,8 @@ public void checkAccess(Authentication authentication, @RequestBody ActionDto ac for (GrantedAuthority grantedAuthority : userDetails.getAuthorities()){ if (grantedAuthority.getAuthority().equals(ROLE_CREWMAN)) { - if (recipientRole.contains(ROLE_ADMIRAL)) { + // Crewman can only send to same rank or rank + 1 + if (ROLE_VALUES.get(recipientRole) > ROLE_VALUES.get(grantedAuthority.getAuthority()) + 1) { 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..176c601 100644 --- a/authorization/src/main/java/com/ship/authorization/service/UsersService.java +++ b/authorization/src/main/java/com/ship/authorization/service/UsersService.java @@ -2,6 +2,7 @@ import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -16,6 +17,20 @@ public class UsersService { public static final String ROLE_ENSIGN = "ROLE_ENSIGN"; public static final String ROLE_CREWMAN = "ROLE_CREWMAN"; + public static final Map ROLE_VALUES; + + static { + Map aMap = new HashMap<>(); + aMap.put(ROLE_ADMIRAL, 6); + aMap.put(ROLE_VICE_ADMIRAL, 5); + aMap.put(ROLE_CAPTAIN, 4); + aMap.put(ROLE_COMMANDER, 3); + aMap.put(ROLE_LIEUTENANT, 2); + aMap.put(ROLE_ENSIGN, 1); + aMap.put(ROLE_CREWMAN, 0); + ROLE_VALUES = Collections.unmodifiableMap(aMap); + } + private Map users = new HashMap<>(); public UsersService() { diff --git a/build.gradle b/build.gradle index 3b319c2..dbd5ac2 100644 --- a/build.gradle +++ b/build.gradle @@ -42,4 +42,4 @@ subprojects { maven { url 'https://repo.spring.io/libs-snapshot' } } -} \ No newline at end of file +} diff --git a/communication/src/main/java/com/ship/communication/controller/MessageController.java b/communication/src/main/java/com/ship/communication/controller/MessageController.java index 1d3d87a..c3d805b 100644 --- a/communication/src/main/java/com/ship/communication/controller/MessageController.java +++ b/communication/src/main/java/com/ship/communication/controller/MessageController.java @@ -3,6 +3,8 @@ import com.ship.communication.model.Message; import com.ship.communication.model.resource.MessageResource; import com.ship.communication.repository.MessageRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.client.ServiceInstance; import org.springframework.cloud.client.discovery.DiscoveryClient; @@ -16,13 +18,14 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; -import javax.servlet.http.HttpSession; import java.util.stream.Collectors; import java.util.stream.StreamSupport; @RestController public class MessageController { + private Logger log = LoggerFactory.getLogger(this.getClass()); + @Autowired private DiscoveryClient discoveryClient; @@ -32,9 +35,19 @@ public class MessageController { @Autowired private MessageRepository messageRepository; + public Message findByRecipientAndSender(String r, String s, MessageRepository mr){ + // stub gg find da message + return null; + } + @RequestMapping(value = "/sendMessage", method = RequestMethod.POST) public Message sendMessage(@RequestBody Message message, @CookieValue("SESSION") String cookie) { - checkAccess(new ActionDto(message.getRecipient()), cookie); + // log message + log.info(message.getTitle().toUpperCase() + ": " + message.getContent()); + // allow the reply to a personal message + if(findByRecipientAndSender(message.getRecipient(), message.getSender()) === null) { + checkAccess(new ActionDto(message.getRecipient()), cookie); + } return messageRepository.save(message); } diff --git a/config-server/src/main/resources/application.yml b/config-server/src/main/resources/application.yml index 8a7b0bc..b716519 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}/Documents/relay/cs-games-2018-relay-cloud/config-server/config eureka: client: