Also the list of games needs to be restricted for not-logged in users strict-games-access
authorJaroslav Tulach <jtulach@netbeans.org>
Tue, 08 Dec 2009 19:57:02 +0100
branchstrict-games-access
changeset 1668c9131715765
parent 164 2949998db4f6
child 167 6402b5d2c19a
Also the list of games needs to be restricted for not-logged in users
webidor/pom.xml
webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Games.java
webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java
     1.1 --- a/webidor/pom.xml	Tue Dec 08 18:47:49 2009 +0100
     1.2 +++ b/webidor/pom.xml	Tue Dec 08 19:57:02 2009 +0100
     1.3 @@ -9,7 +9,7 @@
     1.4    <groupId>org.apidesign</groupId>
     1.5    <artifactId>webidor</artifactId>
     1.6    <packaging>jar</packaging>
     1.7 -  <version>1.9</version>
     1.8 +  <version>1.10</version>
     1.9    <name>webidor server</name>
    1.10    <url>http://maven.apache.org</url>
    1.11    <repositories>
     2.1 --- a/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Games.java	Tue Dec 08 18:47:49 2009 +0100
     2.2 +++ b/webidor/src/main/java/cz/xelfi/quoridor/webidor/resources/Games.java	Tue Dec 08 19:57:02 2009 +0100
     2.3 @@ -136,20 +136,27 @@
     2.4          @QueryParam("move") @DefaultValue("-1") int move
     2.5      ) {
     2.6          Game g = findGame(id, move);
     2.7 -        if (!g.getId().isFinished()) {
     2.8 +        if (canSee(g.getId(), loginId)) {
     2.9              return g;
    2.10          }
    2.11 +        throw new WebApplicationException(Status.UNAUTHORIZED);
    2.12 +    }
    2.13 +
    2.14 +    private boolean canSee(GameId id, String loginId) {
    2.15 +        if (!id.isFinished()) {
    2.16 +            return true;
    2.17 +        }
    2.18          String logUser = quoridor.isLoggedIn(loginId);
    2.19          if (logUser == null) {
    2.20 -            throw new WebApplicationException(Status.UNAUTHORIZED);
    2.21 +            return false;
    2.22          }
    2.23 -        if (logUser.equals(g.getId().getWhite())) {
    2.24 -            return g;
    2.25 +        if (logUser.equals(id.getWhite())) {
    2.26 +            return true;
    2.27          }
    2.28 -        if (logUser.equals(g.getId().getBlack())) {
    2.29 -            return g;
    2.30 +        if (logUser.equals(id.getBlack())) {
    2.31 +            return true;
    2.32          }
    2.33 -        throw new WebApplicationException(Status.UNAUTHORIZED);
    2.34 +        return false;
    2.35      }
    2.36  
    2.37      @PUT
    2.38 @@ -195,10 +202,14 @@
    2.39      @GET
    2.40      @Produces({MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
    2.41      public List<GameId> listGames(
    2.42 +        @DefaultValue("") @QueryParam("loginID") String loginId,
    2.43          @DefaultValue("") @QueryParam("status") String status
    2.44      ) {
    2.45          List<GameId> arr = new ArrayList<GameId>(games.size());
    2.46          for (Game g : games) {
    2.47 +            if (!canSee(g.getId(), loginId)) {
    2.48 +                continue;
    2.49 +            }
    2.50              if (status.length() == 0 || g.getId().getStatus().toString().equals(status)) {
    2.51                  arr.add(g.getId());
    2.52              }
     3.1 --- a/webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java	Tue Dec 08 18:47:49 2009 +0100
     3.2 +++ b/webidor/src/test/java/cz/xelfi/quoridor/webidor/FinishedGameTest.java	Tue Dec 08 19:57:02 2009 +0100
     3.3 @@ -147,8 +147,10 @@
     3.4  
     3.5          assertEquals("Jirka wins", "Jirka", end.getCurrentPlayer());
     3.6  
     3.7 -        List<GameId> something = webResource.path("games/").queryParam("status", "blackWon").accept(MediaType.TEXT_XML).get(gType);
     3.8 +        List<GameId> none = webResource.path("games/").queryParam("status", "blackWon").accept(MediaType.TEXT_XML).get(gType);
     3.9 +        assertEquals("No games, for not logged in users: " + none, 0, none.size());
    3.10  
    3.11 +        List<GameId> something = webResource.path("games/").queryParam("loginID", logJirka).queryParam("status", "blackWon").accept(MediaType.TEXT_XML).get(gType);
    3.12          assertEquals("One game finished: " + something, 1, something.size());
    3.13          assertEquals("Id is OK", end.getId().getId(), something.get(0).getId());
    3.14      }