diff --git a/src/main/java/com/example/cosmos_serversb/entities/User.java b/src/main/java/com/example/cosmos_serversb/entities/User.java index eb1b59a..8a9e190 100644 --- a/src/main/java/com/example/cosmos_serversb/entities/User.java +++ b/src/main/java/com/example/cosmos_serversb/entities/User.java @@ -3,12 +3,14 @@ import java.util.HashSet; import java.util.Set; +import com.example.cosmos_serversb.models.SessionManager; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonView; import lombok.Data; import com.example.cosmos_serversb.views.UsersView; +import org.hibernate.Session; import org.hibernate.validator.constraints.Length; public class User { @@ -55,7 +57,7 @@ setName(name); setIconUri(iconUri); setFirstToken(token); - //addToken(this.dummyToken); + addToken(token); this.login = true; } @@ -74,6 +76,7 @@ public void setFirstToken(String firstToken) { this.firstToken = firstToken; } + public Set getTokens() { return tokens; } @@ -82,6 +85,11 @@ this.tokens = tokens; } + public void addToken(String strToken){ + Session session = SessionManager.getInstance().getSession(); + this.tokens.add(session.get(Token.class, strToken)); + } + public String getUri() { return uri; } diff --git a/src/main/java/com/example/cosmos_serversb/models/Groups.java b/src/main/java/com/example/cosmos_serversb/models/Groups.java index cc6756c..c86f6f3 100644 --- a/src/main/java/com/example/cosmos_serversb/models/Groups.java +++ b/src/main/java/com/example/cosmos_serversb/models/Groups.java @@ -60,7 +60,7 @@ //先にGidとuriの発行を行う String gId = getInstance().createGId(); - String uri = baseURI + AppName + "/groups/" + gId; + String uri = baseURI + AppName + "/rest/groups/" + gId; Group testGroup = new Group(gId, uri, name, uId); Session session = SessionManager.getInstance().getSession(); session.save(testGroup); @@ -170,7 +170,7 @@ return null; //not-null制約 } String rId = getInstance().createRId(); - String uri = baseURI + AppName + "/groups/" + gId + "/requests/" + rId; + String uri = baseURI + AppName + "/rset/groups/" + gId + "/requests/" + rId; Request request = new Request(rId, uri, new Date(), uId, product, deadline, location); Session session = SessionManager.getInstance().getSession(); diff --git a/src/main/java/com/example/cosmos_serversb/models/Users.java b/src/main/java/com/example/cosmos_serversb/models/Users.java index 2c8b971..1fc7e18 100644 --- a/src/main/java/com/example/cosmos_serversb/models/Users.java +++ b/src/main/java/com/example/cosmos_serversb/models/Users.java @@ -74,16 +74,16 @@ return null; //not-null制約 } String uId = getInstance().createUId(); - String uri = baseURI + AppName +"/users/" +uId; + String uri = baseURI + AppName +"/rest/users/" +uId; Session session = SessionManager.getInstance().getSession(); Token token = createToken(uId); LogUtils.info(token.token); + session.save(token); User testUser = new User(name, uId, uri, iconImage,token.token); Password password = new Password(pw, uId); session.save(testUser); session.save(password); - session.save(token); return testUser; } @@ -149,6 +149,7 @@ } public static DeleteResult deleteUser(String uId, String token) { + //リレーションがうまく機能していないため、すべてここで削除しています。 if(checkToken(uId, token)){ Session session = SessionManager.getInstance().getSession(); User deleteUser = (User) session.get(User.class, uId); @@ -163,6 +164,11 @@ } } deleteUser.groups.clear(); + session.delete(session.get(Password.class, uId)); //パスワードの削除 + session.delete(session.get(Token.class, token)); //tokenの削除(応急処置) + for(Token deleteToken : deleteUser.getTokens()){ + session.delete(deleteToken); //tokenの削除 + } session.delete(deleteUser); return DeleteResult.SUCCESS; } @@ -193,7 +199,6 @@ * トークンを削除しログインフラグを操作するためのメソッド * * TODO: queryの文に条件文を追加 - * TODO :logout 変更 */ Session session = SessionManager.getInstance().getSession(); List usersList = session.createQuery( "from User" ).list(); @@ -203,7 +208,14 @@ return DeleteResult.FAILURE; } else { // Users.getInstance().getUserByToken(token).token.remove(Users.getInstance().getUserByToken(token).token.indexOf(token)); - return DeleteResult.SUCCESS; + if(session.get(Token.class, token) != null) { + user.getTokens().remove(session.get(Token.class, token)); + session.delete(session.get(Token.class, token)); + if(user.getTokens().size() == 0){ + user.login = false; + } + return DeleteResult.SUCCESS; + } } } }