Skip to content

Commit 4f58518

Browse files
committed
minor refactor in refresh token repository and account service
1 parent ce6c163 commit 4f58518

3 files changed

Lines changed: 11 additions & 7 deletions

File tree

src/integrationTest/java/com/trynoice/api/identity/entities/RefreshTokenRepositoryTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class RefreshTokenRepositoryTest {
2626
private RefreshTokenRepository refreshTokenRepository;
2727

2828
@Test
29-
void expireAllByOwnerId() {
29+
void updateExpiresAtOfAllByOwnerId() {
3030
val user = createAuthUser(entityManager);
3131

3232
val ownedRefreshTokens = IntStream.range(0, 5)
@@ -37,11 +37,13 @@ void expireAllByOwnerId() {
3737
.mapToObj(i -> createRefreshToken(entityManager, createAuthUser(entityManager)))
3838
.collect(Collectors.toUnmodifiableList());
3939

40-
refreshTokenRepository.expireAllByOwnerId(user.getId());
40+
refreshTokenRepository.updateExpiresAtOfAllByOwnerId(OffsetDateTime.now(), user.getId());
4141
ownedRefreshTokens.stream()
4242
.map(t -> entityManager.find(RefreshToken.class, t.getId()))
4343
.forEach(t -> assertTrue(t.getExpiresAt().isBefore(OffsetDateTime.now())));
4444

45-
unownedRefreshTokens.forEach(t -> assertTrue(refreshTokenRepository.existsById(t.getId())));
45+
unownedRefreshTokens.stream()
46+
.map(t -> entityManager.find(RefreshToken.class, t.getId()))
47+
.forEach(t -> assertTrue(t.getExpiresAt().isAfter(OffsetDateTime.now())));
4648
}
4749
}

src/main/java/com/trynoice/api/identity/AccountService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ private String createSignInToken(@NonNull AuthUser authUser) throws TooManySignI
155155
* @param accessJwt access token provided by the client.
156156
* @throws RefreshTokenVerificationException if the refresh token is invalid, expired or re-used.
157157
*/
158-
@Transactional(rollbackFor = Throwable.class)
158+
@Transactional(rollbackFor = Throwable.class, noRollbackFor = RefreshTokenVerificationException.class)
159159
public void signOut(@NonNull String refreshJwt, @NonNull String accessJwt) throws RefreshTokenVerificationException {
160160
val refreshToken = verifyRefreshJWT(refreshJwt);
161161
refreshToken.setExpiresAt(OffsetDateTime.now());
@@ -291,7 +291,7 @@ public void deleteAccount(@NonNull Long userId) {
291291
user.setDeactivatedAt(OffsetDateTime.now());
292292
authUserRepository.save(user);
293293
deactivatedUserIdsCache.put(userId, Boolean.TRUE);
294-
refreshTokenRepository.expireAllByOwnerId(userId);
294+
refreshTokenRepository.updateExpiresAtOfAllByOwnerId(OffsetDateTime.now(), userId);
295295
}
296296

297297
@Override

src/main/java/com/trynoice/api/identity/entities/RefreshTokenRepository.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import org.springframework.stereotype.Repository;
88
import org.springframework.transaction.annotation.Transactional;
99

10+
import java.time.OffsetDateTime;
11+
1012
/**
1113
* A JPA {@link Repository} declaration for database interactions of {@link RefreshToken} entity.
1214
*/
@@ -21,6 +23,6 @@ public interface RefreshTokenRepository extends CrudRepository<RefreshToken, Lon
2123
*/
2224
@Modifying(flushAutomatically = true, clearAutomatically = true)
2325
@Transactional
24-
@Query("update RefreshToken e set e.expiresAt = now() where e.owner.id = ?1")
25-
void expireAllByOwnerId(@NonNull Long ownerId);
26+
@Query("update RefreshToken e set e.expiresAt = ?1 where e.owner.id = ?2")
27+
void updateExpiresAtOfAllByOwnerId(@NonNull OffsetDateTime expiresAt, @NonNull Long ownerId);
2628
}

0 commit comments

Comments
 (0)