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 7985270..ba0253e 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Animation.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java @@ -137,7 +137,7 @@ return owner; } - public Collection getEditors() { + public ArrayList getEditors() { return editors; } diff --git a/src/main/java/org/ntlab/acanthus_server/resources/gallery/EditorsRest.java b/src/main/java/org/ntlab/acanthus_server/resources/gallery/EditorsRest.java index dcdc4ef..9977711 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/gallery/EditorsRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/gallery/EditorsRest.java @@ -46,6 +46,15 @@ //招待された時のみの追加 var account = accounts.getAccountByUid(uid); var animation = gallery.getAnimationInformation(aid); + + //重複するユーザーのチェック + for (var editor : animation.getEditors()) { + if (editor.getUid() == uid) { + var response = Response.status(401).entity("既にユーザーが参加しています."); + throw new WebApplicationException(response.build()); + } + } + if (account != null && animation != null && account.getToken().equals(token)) { animation.restWorkToEditors(account); } else { 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 1866a84..2ef3b6a 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 @@ -2,12 +2,14 @@ import org.ntlab.acanthus_server.entities.Account; import org.ntlab.acanthus_server.entities.Animation; +import org.ntlab.acanthus_server.entities.Editor; import org.ntlab.acanthus_server.models.Accounts; import org.ntlab.acanthus_server.models.Gallery; import org.springframework.stereotype.Component; import javax.ws.rs.*; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import java.util.Collection; @Component @@ -23,10 +25,10 @@ // オーナーが招待した人を確認する OR 招待された人が本当に招待されているかを確認する /** - * @param aid 作品のID - * @param invitedUid 招待された人のID + * @param aid 作品のID + * @param invitedUid 招待された人のID * @param invitedUserToken 招待された人のトークン - * @param ownerToken オーナーのトークン + * @param ownerToken オーナーのトークン */ @Path("/{aid}/invites") @GET @@ -65,8 +67,8 @@ // オーナーが作品に招待する /** - * @param aid 作品のID - * @param ownerUid オーナーのID + * @param aid 作品のID + * @param ownerUid オーナーのID * @param invitedUid 招待された人のID * @param ownerToken オーナーのトークン */ @@ -79,12 +81,20 @@ Account invitedAccount = accounts.getAccountByUid(Integer.parseInt(invitedUid)); Account owner = animation.getOwner(); + //重複するユーザーのチェック + for (var editor : animation.getEditors()) { + if (editor.getUid() == Integer.parseInt(invitedUid)) { + var response = Response.status(401).entity("既にユーザーが参加しています."); + throw new WebApplicationException(response.build()); + } + } + if (owner != null && owner.getToken().equals(ownerToken)) { animation.addAccountToAnimationInvites(invitedAccount); //↓Workのstatusを招待状態にする処理 Account account = accounts.getAccountByUid(Integer.parseInt(invitedUid)); var work = owner.getWorkHashMap().get(aid); - account.getWorkHashMap().put(aid,work); + account.getWorkHashMap().put(aid, work); account.getWorkHashMap().get(aid).setInvites(animation); return "追加しました"; } else { @@ -98,9 +108,9 @@ // 招待されてた人が確認後、招待履歴を削除する(オーナーが招待を取り消しは実装しない) /** - * @param aid 作品のID - * @param invitedUid 招待された人のID - * @param invitedToken 招待された人のトークン + * @param aid 作品のID + * @param invitedUid 招待された人のID + * @param invitedToken 招待された人のトークン */ @Path("/{aid}/invites")