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 53dbd1c..1c6cb4e 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Account.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Account.java @@ -57,14 +57,16 @@ //----------------------------------------------------------------- //コンストラクト + public Account() { + createDummyAccount(); + } + //----------------------------------------------------------------- + public Account(Integer uid, String name, String email, String password) { this.uid = uid; this.name = name; this.email = email; this.password = password; - - // ダミー - createDummyAccount(); } //----------------------------------------------------------------- @@ -165,7 +167,7 @@ this.isDummy = true; this.uid = 1; this.name = "dummy"; - this.email = "d@m.com"; + this.email = "d@dummy.com"; this.password = "nittalab"; this.token = "abc"; } 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/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()); } //-----------------------------------------------------------