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/Users.java b/src/main/java/com/example/cosmos_serversb/models/Users.java index 6beae5b..e85b1de 100644 --- a/src/main/java/com/example/cosmos_serversb/models/Users.java +++ b/src/main/java/com/example/cosmos_serversb/models/Users.java @@ -79,11 +79,11 @@ 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,10 @@ } } deleteUser.groups.clear(); + session.delete(session.get(Password.class, uId)); //パスワードの削除 + for(Token deleteToken : deleteUser.getTokens()){ + session.delete(deleteToken); //tokenの削除 + } session.delete(deleteUser); return DeleteResult.SUCCESS; } @@ -202,8 +207,14 @@ return DeleteResult.FAILURE; } else { // Users.getInstance().getUserByToken(token).token.remove(Users.getInstance().getUserByToken(token).token.indexOf(token)); - session.delete(session.get(Token.class, 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; + } } } } diff --git a/src/main/resources/User.hbm.xml b/src/main/resources/User.hbm.xml index d4528e7..f89e09f 100644 --- a/src/main/resources/User.hbm.xml +++ b/src/main/resources/User.hbm.xml @@ -29,6 +29,16 @@ column="GID"> + + + + + \ No newline at end of file