Skip to content
This repository was archived by the owner on Oct 21, 2024. It is now read-only.

Commit dd25742

Browse files
author
kahverengi
committed
Add delete old tokens for subjects (EMAIL_VERIFICATION & RESET_PASSWORD)
1 parent 7a74a4f commit dd25742

File tree

1 file changed

+49
-8
lines changed

1 file changed

+49
-8
lines changed

src/main/kotlin/com/parnote/util/TokenUtil.kt

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,59 @@ object TokenUtil {
4949
)
5050
.compact()
5151

52-
databaseManager.getDatabase().tokenDao.add(
53-
Token(-1, token, userID, subject.toString()),
54-
sqlConnection
55-
) { result, asyncResult ->
56-
if (result == null) {
57-
handler.invoke(null, asyncResult)
52+
if (subject != SUBJECT.LOGIN_SESSION)
53+
databaseManager.getDatabase().tokenDao.isAnyTokenExistByUserIDAndSubject(
54+
userID,
55+
subject.toString(),
56+
sqlConnection
57+
) { exists, asyncResultOfIsAnyTokenExistsByUserIDAndSubject ->
58+
if (exists == null) {
59+
handler.invoke(null, asyncResultOfIsAnyTokenExistsByUserIDAndSubject)
5860

59-
return@add
61+
return@isAnyTokenExistByUserIDAndSubject
62+
}
63+
64+
if (exists)
65+
databaseManager.getDatabase().tokenDao.deleteByUserIDAndSubject(
66+
userID,
67+
subject.toString(),
68+
sqlConnection
69+
) { resultOfDeleteByUserIDAndSubject, asyncResultOfDeleteByUserIDAndSubject ->
70+
if (resultOfDeleteByUserIDAndSubject == null) {
71+
handler.invoke(null, asyncResultOfDeleteByUserIDAndSubject)
72+
73+
return@deleteByUserIDAndSubject
74+
}
75+
76+
addToken(databaseManager, token, userID, subject, sqlConnection, handler)
77+
}
78+
else
79+
addToken(databaseManager, token, userID, subject, sqlConnection, handler)
6080
}
81+
else
82+
addToken(databaseManager, token, userID, subject, sqlConnection, handler)
83+
}
84+
}
85+
86+
private fun addToken(
87+
databaseManager: DatabaseManager,
88+
token: String,
89+
userID: Int,
90+
subject: SUBJECT,
91+
sqlConnection: SQLConnection,
92+
handler: (token: String?, asyncResult: AsyncResult<*>) -> Unit
93+
) {
94+
databaseManager.getDatabase().tokenDao.add(
95+
Token(-1, token, userID, subject.toString()),
96+
sqlConnection
97+
) { result, asyncResult ->
98+
if (result == null) {
99+
handler.invoke(null, asyncResult)
61100

62-
handler.invoke(token, asyncResult)
101+
return@add
63102
}
103+
104+
handler.invoke(token, asyncResult)
64105
}
65106
}
66107
}

0 commit comments

Comments
 (0)