diff --git a/src/main/java/org/ntlab/acanthus_server/entities/Account.java b/src/main/java/org/ntlab/acanthus_server/entities/Account.java index 7be09f3..a02616a 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Account.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Account.java @@ -36,7 +36,7 @@ "work" }) -// +// ユーザーアカウント public class Account { @JsonProperty("name") @@ -83,7 +83,7 @@ public void addWork(Work work) { var aid = work.getAnimation().getAid(); - this.workHashMap.put(aid,work); + this.workHashMap.put(aid, work); } //----------------------------------------------------------------- @@ -108,13 +108,17 @@ return (this.token); } + public HashMap getWorkHashMap() { + return this.workHashMap; + } + //----------------------------------------------------------------- // 招待されている作品を返す - public HashMap getInvitedMap() { + public HashMap getInvitedMap() { var invitedMap = new HashMap(); for (var work : workHashMap.values()) { - if (work.isInviting()){ + if (work.isInviting()) { var aid = work.getAnimation().getAid(); invitedMap.put(aid, work); } @@ -124,11 +128,11 @@ //----------------------------------------------------------------- // 参加している作品を返す - public HashMap getWorkingList() { + public HashMap getWorkingMap() { var workingMap = new HashMap(); for (var work : workHashMap.values()) { - if (work.isWorking()){ + if (work.isWorking()) { var aid = work.getAnimation().getAid(); workingMap.put(aid, work); } diff --git a/src/main/java/org/ntlab/acanthus_server/entities/Animation.java b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java index 76445e6..5270c60 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Animation.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java @@ -56,6 +56,8 @@ public String getName() { return name; } + public Account getOwner() { return owner; } + public Collection getAnimationInvites() { return invites; } diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java index 8b55d5c..518b2a1 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/AccountsRest.java @@ -63,7 +63,7 @@ var uid = Integer.parseInt(uidStr); var searchAccount = accounts.getAccountByUid(uid); - if (!searchAccount.getUid().equals(uid)) throw new WebApplicationException(404); + if (searchAccount == null) throw new WebApplicationException(404); if (!searchAccount.getToken().equals(token)) throw new WebApplicationException(400); return searchAccount; diff --git a/src/main/java/org/ntlab/acanthus_server/resources/gallery/InvitesRest.java b/src/main/java/org/ntlab/acanthus_server/resources/gallery/InvitesRest.java index bdf69f1..7fbcde1 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/gallery/InvitesRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/gallery/InvitesRest.java @@ -15,22 +15,29 @@ public class InvitesRest { private Gallery animations = Gallery.getInstance(); + private Accounts accounts = Accounts.getInstance(); + @Path("/{aid}/invites") @GET @Produces(MediaType.APPLICATION_JSON) - public Collection isGalleryInvites(@PathParam("aid")Integer aid, @QueryParam("invitedUid") String invitedUid, @QueryParam("invitedUidToken") String invitedUserToken, @QueryParam("Token") String ownerToken) { + public Collection isGalleryInvites(@PathParam("aid") Integer aid, @QueryParam("invitedUid") String invitedUid, @QueryParam("invitedUidToken") String invitedUserToken, @QueryParam("Token") String ownerToken) { Animation animation = animations.getAnimationByAid(aid); - //トークンの確認 - + //招待した人を確認する if (invitedUid == null && invitedUserToken == null) { - //招待した人を確認する - return animation.getAnimationInvites(); + Account owner = animation.getOwner(); + if (owner != null && owner.getToken().equals(ownerToken)) { + return animation.getAnimationInvites(); + } } - if(ownerToken == null){ - //招待されているかを確認する - return animation.searchAnimationInvites(aid, invitedUid, invitedUserToken); + + //招待されているかを確認する + if (ownerToken == null) { + Account invitedAccount = accounts.getAccountByUid(Integer.parseInt(invitedUid)); + if (invitedAccount != null && invitedAccount.getToken().equals(invitedUserToken)) { + return animation.searchAnimationInvites(aid, invitedUid, invitedUserToken); + } } return null; } @@ -38,26 +45,31 @@ @Path("/{aid}/invites") @PUT @Produces(MediaType.APPLICATION_JSON) - public String addInvite(@PathParam("aid")Integer aid, @FormParam("ownerUid") String ownerUid, @FormParam("invitedUid") String invitedUid) { + public String addInvite(@PathParam("aid") Integer aid, @FormParam("ownerUid") String ownerUid, @FormParam("invitedUid") String invitedUid, @FormParam("ownerToken") String ownerToken) { Animation animation = animations.getAnimationByAid(aid); //トークンの確認 - - animation.addAccoutToAnimationInvites(aid,ownerUid,invitedUid); - - return "追加しました"; + Account owner = animation.getOwner(); + if (owner != null && owner.getToken().equals(ownerToken)) { + animation.addAccoutToAnimationInvites(aid, ownerUid, invitedUid); + return "追加しました"; + } + return null; } @Path("/{aid}/invites") @DELETE @Produces(MediaType.APPLICATION_JSON) - public String deleteInvite(@PathParam("aid")Integer aid, @FormParam("invitedUid") String invitedUid, @FormParam("invitedToken") String invitedToken) { + public String deleteInvite(@PathParam("aid") Integer aid, @FormParam("invitedUid") String invitedUid, @FormParam("invitedToken") String invitedToken) { Animation animation = animations.getAnimationByAid(aid); //トークンの確認 + Account invitedAccount = accounts.getAccountByUid(Integer.parseInt(invitedUid)); + if (invitedAccount != null && invitedAccount.getToken().equals(invitedToken)) { + animation.deleteAccountFromAnimationInvites(aid, invitedUid); - animation.deleteAccountFromAnimationInvites(aid,invitedUid); - - return "削除しました"; + return "削除しました"; + } + return null; } } \ No newline at end of file