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 1f2c7c8..1c6cb4e 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Account.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Account.java @@ -52,9 +52,16 @@ private String token; @JsonIgnore private String password; + @JsonIgnore + private boolean isDummy; //----------------------------------------------------------------- //コンストラクト + public Account() { + createDummyAccount(); + } + //----------------------------------------------------------------- + public Account(Integer uid, String name, String email, String password) { this.uid = uid; this.name = name; @@ -144,7 +151,7 @@ //----------------------------------------------------------------- // トークンを更新する 藤井 public void updateToken() { - this.token = UUID.randomUUID().toString(); + if (!isDummy) this.token = UUID.randomUUID().toString(); } //----------------------------------------------------------------- @@ -152,6 +159,17 @@ public boolean isMatchedPassword(String password) { return this.password.equals(password); } - //----------------------------------------------------------------- + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // ダミー + private void createDummyAccount() { + this.isDummy = true; + this.uid = 1; + this.name = "dummy"; + this.email = "d@dummy.com"; + this.password = "nittalab"; + this.token = "abc"; + } + //----------------------------------------------------------------- } 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 d36399e..c5a212c 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Animation.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java @@ -72,6 +72,8 @@ public Account getOwner() { return owner; } + public Collection getEditors() { return editors; } + public Collection getAnimationInvites() { return invites; } diff --git a/src/main/java/org/ntlab/acanthus_server/entities/Work.java b/src/main/java/org/ntlab/acanthus_server/entities/Work.java index d870807..4052ad6 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Work.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Work.java @@ -1,6 +1,9 @@ package org.ntlab.acanthus_server.entities; +import org.ntlab.acanthus_server.models.Gallery; + public class Work { + private Gallery animations = Gallery.getInstance(); int status = 0; Animation animation = null; @@ -9,7 +12,11 @@ public void setAnimation(Animation anime) { this.animation = anime; } - public void setInvites(){ this.status = 1; } + public void setInvites(int aid){ + animation = animations.getAnimationByAid(aid); + this.setAnimation(animation); + this.status = 1; + } public void setWork(){ this.status = 2; } diff --git a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java index 4496a60..92a0020 100644 --- a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java +++ b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java @@ -20,6 +20,7 @@ //----------------------------------------------------------------- // インスタンス生成禁止 private Accounts() { + createDummyAccount(); //ダミー } //----------------------------------------------------------------- @@ -91,4 +92,11 @@ return newAccount; } //----------------------------------------------------------------- + //----------------------------------------------------------------- + // ダミーアカウント生成 + private void createDummyAccount(){ + var dummyAccount = new Account(); + accountHashMap.put(dummyAccount.getUid(), dummyAccount); + } + //----------------------------------------------------------------- } 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 629063d..61429c2 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 @@ -41,7 +41,8 @@ } }; - if (name != null) for (var account : accounts.getAccountsByName(name)) addJson.accept(account); // 名前の一致するアカウントを返す + if (name != null) + for (var account : accounts.getAccountsByName(name)) addJson.accept(account); // 名前の一致するアカウントを返す else for (var account : accounts.getAllAccounts()) addJson.accept(account); // 全アカウントの取得 return accountJsonList; @@ -66,16 +67,17 @@ var response = Response.status(Response.Status.NO_CONTENT); // アカウントの検索 - if (searchAccount == null){ + if (searchAccount == null) { response = Response.status(404).entity("該当アカウントが存在しません。"); throw new WebApplicationException(response.build()); } // トークンを検証し, 発見したユーザーを返却 - if (!token.equals(searchAccount.getToken())) response = Response.status(400).entity("トークンが違います。"); + if (!token.equals(searchAccount.getToken())){ + response = Response.status(400).entity("トークンが違います。"); + throw new WebApplicationException(response.build()); + } else return searchAccount; - - throw new WebApplicationException(response.build()); } //----------------------------------------------------------------- @@ -96,19 +98,21 @@ ResponseBuilder response = Response.status(0); // パスワード, メアドが正しく入力されているかチェック - if (!isCorrectName(name) || !isCorrectPassword(password) || !isCorrectEmailAddress(email)) + if (!isCorrectName(name) || !isCorrectPassword(password) || !isCorrectEmailAddress(email)) { response.status(401).entity("入力に誤りがあります。"); + throw new WebApplicationException(response.build()); + } // すでに同じメールアドレスが存在しているか var existAccount = accounts.getAccountByEmail(email); - if (existAccount != null) response.status(400).entity("入力されたメールアドレスは既に使われています。"); - else { + if (existAccount == null) { // アカウント登録をしてuidを返す var newAccount = accounts.registerAccount(name, email, password); return newAccount.getUid(); + } else { + response.status(400).entity("入力されたメールアドレスは既に使われています。"); + throw new WebApplicationException(response.build()); } - - throw new WebApplicationException(response.build()); } //----------------------------------------------------------------- diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java index f5b89ab..dbe6cd4 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/InvitedRest.java @@ -61,7 +61,7 @@ //招待された作品の招待者の中に自分が含まれているか確認 if(invitedAnimation.searchAnimationInvites(aid, String.valueOf(invitedUid)) != null){ //Workクラスのstateを1に変更 - accountInvitedMap.get(aid).setInvites(); + //accountInvitedMap.get(aid).setInvites(); }else{ throw new WebApplicationException(400); diff --git a/src/main/java/org/ntlab/acanthus_server/resources/accounts/LoginRest.java b/src/main/java/org/ntlab/acanthus_server/resources/accounts/LoginRest.java index 362a44b..95e9411 100644 --- a/src/main/java/org/ntlab/acanthus_server/resources/accounts/LoginRest.java +++ b/src/main/java/org/ntlab/acanthus_server/resources/accounts/LoginRest.java @@ -20,6 +20,7 @@ //----------------------------------------------------------- // ログイン情報が正しいかどうか + /** * ログイン時のトークン認証 * アカウントが存在して, かつトークンを持っているかを確認する @@ -28,12 +29,15 @@ @Produces(MediaType.APPLICATION_JSON) public boolean hasLoginToken(@QueryParam("uid") String uidStr, @QueryParam("token") String token) { - var response = Response.status(Response.Status.NO_CONTENT); var uid = Integer.parseInt(uidStr); var searchAccount = accounts.getAccountByUid(uid); + var response = Response.status(Response.Status.NO_CONTENT); // アカウントとトークンの検証 - if (searchAccount == null) response.status(404).entity(false); + if (searchAccount == null) { + response.status(404).entity(false); + throw new WebApplicationException(response.build()); + } if (!token.equals(searchAccount.getToken())) response.status(400).entity(false); else return true; @@ -52,17 +56,20 @@ @Produces(MediaType.APPLICATION_JSON) public String issueLoginToken(@FormParam("email") String email, @FormParam("password") String password) { - var response = Response.status(Response.Status.NO_CONTENT); var searchAccount = accounts.getAccountByEmail(email); + var response = Response.status(Response.Status.NO_CONTENT); - if (searchAccount == null) response.status(404).entity("アカウントが存在しません。"); + if (searchAccount == null) { + response.status(404).entity("アカウントが存在しません。"); + throw new WebApplicationException(response.build()); + } + if (!searchAccount.isMatchedPassword(password)) response.entity(401).entity("不正なパスワードです。"); else { // トークンをアカウントに設定 searchAccount.updateToken(); return searchAccount.getToken(); } - throw new WebApplicationException(response.build()); } //----------------------------------------------------------- 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 8de0c7f..31e2fb6 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 @@ -81,7 +81,7 @@ animation.addAccoutToAnimationInvites(aid, ownerUid, invitedUid); //↓矢印Workのstatusを招待状態にする処理 Account account = accounts.getAccountByUid(Integer.parseInt(invitedUid)); - account.getWorkHashMap().get(aid).setInvites(); + account.getWorkHashMap().get(aid).setInvites(aid); return "追加しました"; } else { throw new WebApplicationException(404);