Latihan 1 dari materi Refresh Token Rotation di Auth — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Implementasikan function rotateTokens(refreshToken, store) untuk Refresh Token Rotation:
store adalah sebuah Map dengan key = token string, value = { userId, used, valid }
Jika token tidak ada di store: return { success: false, error: "invalid" }
Jika token sudah dipakai (used: true): set valid: false untuk token tersebut, return { success: false, error: "reuse_detected" }
Jika token valid: tandai token lama sebagai used: true, tambahkan token baru ke store, return { success: true, newAccessToken, newRefreshToken }
Format token baru: "access_" + userId + "_" + (store.size) dan "refresh_" + userId + "_" + (store.size)
Hint
Tiga cabang: (1) token tidak ada di store → invalid. (2) token ada tapi used === true → reuse_detected (dan set valid:false pada entry lama). (3) token valid → tandai used:true, issue pasangan baru.
Untuk token baru: index = store.size SEBELUM menambah entry baru (karena instruksi: "access_" + userId + "_" + store.size). Tambahkan entry baru ke store dengan valid:true, used:false.