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 bc762f0..69664be 100644 --- a/src/main/java/org/ntlab/acanthus_server/models/Accounts.java +++ b/src/main/java/org/ntlab/acanthus_server/models/Accounts.java @@ -10,6 +10,11 @@ */ public class Accounts { private static Accounts _theInstance = null; + + /** + * @param Integer ユーザーID + * @param Account 対応するユーザー + */ private HashMap _accountHashMap = new HashMap<>(); //----------------------------------------------------------------- @@ -23,8 +28,21 @@ if(_theInstance == null) _theInstance = new Accounts(); return _theInstance; } + //----------------------------------------------------------------- + //----------------------------------------------------------------- + // Uidからアカウントを返す + //----------------------------------------------------------------- + public Account getAccountByUid(int uid){ return _accountHashMap.get(uid); } //----------------------------------------------------------------- - + // e-Mailからアカウントを返す + //----------------------------------------------------------------- + public Account getAccountByEMail(String email){ + for(var account : _accountHashMap.values()){ + // if(email == account.getEmail()) return account; + } + return null; + } + //----------------------------------------------------------------- } 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 c06eb49..21ea92a 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 @@ -1,34 +1,37 @@ package org.ntlab.acanthus_server.resources.accounts; -import org.ntlab.acanthus_server.entities.Account; import org.ntlab.acanthus_server.models.Accounts; import org.springframework.stereotype.Component; -import javax.ws.rs.GET; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; +import javax.ws.rs.*; import javax.ws.rs.core.MediaType; -import java.awt.*; +import java.util.UUID; @Component @Path("/accounts/login") -public class LoginRest{ +public class LoginRest { private Accounts accounts = Accounts.getInstance(); //----------------------------------------------------------- + /** * ログイン時のトークン認証 - * @param uid ユーザーID - * @param token トークン + * アカウントが存在して, かつトークンを持っているかを確認する. + * + * @param uid ユーザーID + * @param token トークン */ @GET @Produces(MediaType.APPLICATION_JSON) - public boolean hasLoginToken(String uid, String token) { - //if(uid != accounts.getAccountByUid(uid)) return false; - // return (token == accounts.getAccount(uid).getToken()); - return false; + public boolean hasLoginToken(@QueryParam("uid") int uid, @QueryParam("token") String token) { + + var searchAccount = accounts.getAccountByUid(uid); + + if (searchAccount == null) throw new WebApplicationException(404); + if (token != searchAccount.getToken()) throw new WebApplicationException(400); + + return true; } // ToDo: トークン発行をJsonで返すのか, クラスで返却するのか決める. @@ -36,6 +39,26 @@ //----------------------------------------------------------- + /** + * ログイン時のトークン発行 + * + * @param email ユーザーの登録したメアド + * @param password パスワード + */ + @PUT + @Produces(MediaType.APPLICATION_JSON) + public String getSignLoginToken(@FormParam("e-mail") String email, @FormParam("password") String password) { + + var searchAccount = accounts.getAccountByEMail(email); + + if (searchAccount == null) throw new WebApplicationException(404); +// if(searchAccount.authPassword(password)) throw new WebApplicationException(401); + + var newToken = UUID.randomUUID().toString(); + + + return newToken; + } }