diff --git a/src/main/java/org/ntlab/acanthus_server/entities/AccountJson.java b/src/main/java/org/ntlab/acanthus_server/entities/AccountJson.java index e306864..2ee48fe 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/AccountJson.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/AccountJson.java @@ -14,15 +14,12 @@ private Integer uid; @JsonProperty("name") private String name; - @JsonProperty("email") - private String email; //----------------------------------------------------------------- //----------------------------------------------------------------- public AccountJson(Account account){ this.uid = account.getUid(); this.name = account.getName(); - this.email = account.getEmail(); } //----------------------------------------------------------------- } 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 3aceea6..2c58c6a 100644 --- a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java +++ b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java @@ -6,6 +6,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.Random; +import java.util.regex.Pattern; /* * アカウント管理シングルトン 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 c8ac315..8b55d5c 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 @@ -10,6 +10,7 @@ import javax.ws.rs.core.MediaType; import java.util.ArrayList; import java.util.Collection; +import java.util.regex.Pattern; @Component @Path("/accounts") @@ -38,7 +39,7 @@ } } // 全アカウントの取得 - else{ + else { for (var account : accounts.getAllAccounts()) { var newAccountJson = new AccountJson(account); accountJsonList.add(newAccountJson); @@ -82,9 +83,9 @@ @Produces(MediaType.APPLICATION_JSON) public int createAccount(@FormParam("name") String name, @FormParam("email") String email, @FormParam("password") String password) { - // password: 最低8文字以上の入力 - var passMinLen = 8; - if (password.length() < passMinLen) throw new WebApplicationException(401); + // パスワード, メアドが正しく入力されているかチェック + if (!isCorrectPassword(password) || !isCorrectEmailAddress(email)) + throw new WebApplicationException(401); // すでに同じメールアドレスが存在しているか var existAccount = accounts.getAccountByEmail(email); @@ -95,6 +96,40 @@ return newAccount.getUid(); } + + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // 正しいメールアドレスが登録されているか判定 + //----------------------------------------------------------------- + + /** + * @param emailAddress メアド + */ + @SuppressWarnings("{unchecked}") // 正規表現の警告無視 + private boolean isCorrectEmailAddress(String emailAddress) { + + var aText = "[a-zA-Z0-9_!#¥¥$¥¥%&'*+/=?¥¥^`{}~|¥¥-]+"; + var dotAtom = aText + "(?:\\." + aText + "+)*"; + var regularExpression = "^" + dotAtom + "@" + dotAtom + "$"; + + var pattern = Pattern.compile(regularExpression); + var matcher = pattern.matcher(emailAddress); + + return matcher.find(); + } + + //----------------------------------------------------------------- + // 正しいパスワードが入力されているかチェック + //----------------------------------------------------------------- + + /** + * @param password パスワード + */ + private boolean isCorrectPassword(String password) { + // password: 最低8文字以上の入力 + var passMinLen = 8; + return (passMinLen <= password.length()); + } //----------------------------------------------------------------- } 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 bce300e..cf3ab3b 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 @@ -47,7 +47,7 @@ if (searchAccount == null) throw new WebApplicationException(400); if (!searchAccount.isMatchedPassword(password)) throw new WebApplicationException(401); - searchAccount.updateToken(); + searchAccount.updateToken(); // トークンをアカウントに設定 return searchAccount.getToken(); } //-----------------------------------------------------------