Files
bsky-social-app/src/lib/jwt.ts
T
2026-08-25 09:40:14 +03:00

30 lines
802 B
TypeScript

import {jwtDecode} from 'jwt-decode'
import {logger} from '#/logger'
/**
* Simple check if a JWT token has expired. Does *not* validate the token or check for revocation status,
* just checks the expiration time.
*
* @param token The JWT token to check.
* @returns `true` if the token has expired, `false` otherwise.
*/
export function isJwtExpired(token: string) {
try {
const payload = jwtDecode(token)
if (!payload.exp) return true
const now = Math.floor(Date.now() / 1000)
return now >= payload.exp
} catch {
logger.error(`session: could not decode jwt`)
return true // invalid token or parse error
}
}
export function isAppPassword(token: string) {
const payload = jwtDecode(token)
// @ts-expect-error
return payload.scope === 'com.atproto.appPass'
}