generated from erangel1/generic-template
initial commit. phase 1 complete
This commit is contained in:
+27
@@ -0,0 +1,27 @@
|
||||
const base64url = require('./base64url');
|
||||
|
||||
module.exports = (token) => {
|
||||
if (typeof token !== 'string' || !token) {
|
||||
throw new TypeError('JWT must be a string');
|
||||
}
|
||||
|
||||
const { 0: header, 1: payload, 2: signature, length } = token.split('.');
|
||||
|
||||
if (length === 5) {
|
||||
throw new TypeError('encrypted JWTs cannot be decoded');
|
||||
}
|
||||
|
||||
if (length !== 3) {
|
||||
throw new Error('JWTs must have three components');
|
||||
}
|
||||
|
||||
try {
|
||||
return {
|
||||
header: JSON.parse(base64url.decode(header)),
|
||||
payload: JSON.parse(base64url.decode(payload)),
|
||||
signature,
|
||||
};
|
||||
} catch (err) {
|
||||
throw new Error('JWT is malformed');
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user