fix: decode org context from jwt payload robustly
Add base64 padding before atob when parsing token payload so current_org_id extraction no longer fails intermittently and loops users back to org select. Made-with: Cursor
This commit is contained in:
+2
-1
@@ -46,8 +46,9 @@ const parseCurrentOrgIdFromToken = (token: string | null): string | undefined =>
|
||||
const tokenParts = token.split('.');
|
||||
if (tokenParts.length < 2) return undefined;
|
||||
const payloadRaw = tokenParts[1].replace(/-/g, '+').replace(/_/g, '/');
|
||||
const payloadRawWithPadding = payloadRaw.padEnd(Math.ceil(payloadRaw.length / 4) * 4, '=');
|
||||
const payloadJson = decodeURIComponent(
|
||||
atob(payloadRaw)
|
||||
atob(payloadRawWithPadding)
|
||||
.split('')
|
||||
.map((char) => `%${(`00${char.charCodeAt(0).toString(16)}`).slice(-2)}`)
|
||||
.join('')
|
||||
|
||||
+2
-1
@@ -66,8 +66,9 @@ function parseCurrentOrgIdFromToken(token: string | null): string | undefined {
|
||||
const tokenParts = token.split('.');
|
||||
if (tokenParts.length < 2) return undefined;
|
||||
const payloadRaw = tokenParts[1].replace(/-/g, '+').replace(/_/g, '/');
|
||||
const payloadRawWithPadding = payloadRaw.padEnd(Math.ceil(payloadRaw.length / 4) * 4, '=');
|
||||
const payloadJson = decodeURIComponent(
|
||||
atob(payloadRaw)
|
||||
atob(payloadRawWithPadding)
|
||||
.split('')
|
||||
.map((char) => `%${(`00${char.charCodeAt(0).toString(16)}`).slice(-2)}`)
|
||||
.join('')
|
||||
|
||||
Reference in New Issue
Block a user