diff --git a/build.gradle b/build.gradle index c5770e4..a590c3e 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,6 @@ developmentOnly 'org.springframework.boot:spring-boot-devtools' providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat' testImplementation 'org.springframework.boot:spring-boot-starter-test' - compile("com.fasterxml.jackson.core:jackson-databind") } 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/entities/Animation.java b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java index f104f89..76445e6 100644 --- a/src/main/java/org/ntlab/acanthus_server/entities/Animation.java +++ b/src/main/java/org/ntlab/acanthus_server/entities/Animation.java @@ -86,5 +86,13 @@ } //----------------------------------------------------------------- + //招待されて人が招待を取り消す + public void deleteAccountFromAnimationInvites(Integer aid, String invitedUid) { + Animation animation = gallery.getAnimationByAid(aid); + Account invitedAccount = accounts.getAccountByUid(Integer.parseInt(invitedUid)); + invites.remove(invitedAccount); + } + + //----------------------------------------------------------------- } 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(); } //----------------------------------------------------------- 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 50fe520..41c423d 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 @@ -1,5 +1,6 @@ package org.ntlab.acanthus_server.resources.gallery; +import org.ntlab.acanthus_server.models.Accounts; import org.springframework.stereotype.Component; import javax.ws.rs.*; @@ -7,21 +8,30 @@ @Component @Path("gallery") public class EditorsRest { + private Accounts accounts = Accounts.getInstance(); + /* - 各ユーザーの作品を取得するメソッド + Editorに追加 */ @Path("{aid}/Editors") @GET - public String getEditors(@PathParam("uid") String uid, @QueryParam("token") String token) { + public String getEditors(@PathParam("aid")Integer aid, @QueryParam("uid") Integer uid, @QueryParam("token") String token) { + var account = accounts.getAccountByUid(uid); return "Ok"; } /* - 作品への参加を許可するメソッド + galleryのinvitesにいるか確認 */ @Path("/{aid}/Editors") @PUT - public String addEditors(@PathParam("uid")String uid, @FormParam("token") String token) { - return "Ok"; + public String addEditors(@PathParam("aid")Integer aid, @FormParam("uid")Integer uid, @FormParam("token") String token) { + var account = accounts.getAccountByUid(uid); + if(uid != null && account.getToken().equals(token)){ + return "OK"; + } + else { + throw new WebApplicationException(401); + } } } 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 53461f5..bdf69f1 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 @@ -52,7 +52,11 @@ @DELETE @Produces(MediaType.APPLICATION_JSON) public String deleteInvite(@PathParam("aid")Integer aid, @FormParam("invitedUid") String invitedUid, @FormParam("invitedToken") String invitedToken) { + Animation animation = animations.getAnimationByAid(aid); + //トークンの確認 + + animation.deleteAccountFromAnimationInvites(aid,invitedUid); return "削除しました"; }