@shopify/shopify-api
Version:
Shopify API Library for Node - accelerate development with support for authentication, graphql proxy, webhooks
1 lines • 2.07 kB
Source Map (JSON)
{"version":3,"file":"decode-session-token.mjs","sources":["../../../../../../lib/session/decode-session-token.ts"],"sourcesContent":["import * as jose from 'jose';\n\nimport {ConfigInterface} from '../base-types';\nimport * as ShopifyErrors from '../error';\nimport {getHMACKey} from '../utils/get-hmac-key';\n\nimport {JwtPayload} from './types';\n\nconst JWT_PERMITTED_CLOCK_TOLERANCE = 10;\n\nexport interface DecodeSessionTokenOptions {\n checkAudience?: boolean;\n}\n\nexport function decodeSessionToken(config: ConfigInterface) {\n return async (\n token: string,\n {checkAudience = true}: DecodeSessionTokenOptions = {},\n ): Promise<JwtPayload> => {\n let payload: JwtPayload;\n try {\n payload = (\n await jose.jwtVerify(token, getHMACKey(config.apiSecretKey), {\n algorithms: ['HS256'],\n clockTolerance: JWT_PERMITTED_CLOCK_TOLERANCE,\n })\n ).payload as unknown as JwtPayload;\n } catch (error) {\n throw new ShopifyErrors.InvalidJwtError(\n `Failed to parse session token '${token}': ${error.message}`,\n );\n }\n\n // The exp and nbf fields are validated by the JWT library\n\n if (checkAudience && payload.aud !== config.apiKey) {\n throw new ShopifyErrors.InvalidJwtError(\n 'Session token had invalid API key',\n );\n }\n\n return payload;\n };\n}\n"],"names":["ShopifyErrors.InvalidJwtError"],"mappings":";;;;AAQA,MAAM,6BAA6B,GAAG,EAAE;AAMlC,SAAU,kBAAkB,CAAC,MAAuB,EAAA;IACxD,OAAO,OACL,KAAa,EACb,EAAC,aAAa,GAAG,IAAI,EAAA,GAA+B,EAAE,KAC/B;AACvB,QAAA,IAAI,OAAmB;AACvB,QAAA,IAAI;AACF,YAAA,OAAO,GAAG,CACR,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;gBAC3D,UAAU,EAAE,CAAC,OAAO,CAAC;AACrB,gBAAA,cAAc,EAAE,6BAA6B;aAC9C,CAAC,EACF,OAAgC;QACpC;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,MAAM,IAAIA,eAA6B,CACrC,CAAA,+BAAA,EAAkC,KAAK,CAAA,GAAA,EAAM,KAAK,CAAC,OAAO,CAAA,CAAE,CAC7D;QACH;;QAIA,IAAI,aAAa,IAAI,OAAO,CAAC,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE;AAClD,YAAA,MAAM,IAAIA,eAA6B,CACrC,mCAAmC,CACpC;QACH;AAEA,QAAA,OAAO,OAAO;AAChB,IAAA,CAAC;AACH;;;;"}