mirror of
https://github.com/directus/directus.git
synced 2026-01-30 23:58:15 -05:00
* Declare return types on functions And a very few other type related minor fixes * Minor syntax fixes * Remove unnecessary escape chars in regexes * Remove unnecessary awaits * Replace deprecated req.connection with req.socket * Replace deprecated upload with uploadOne * Remove unnecessary eslint-disable-next-line comments * Comment empty functions / catch or finally clauses * Fix irregular whitespaces * Add missing returns (null) * Remove unreachable code * A few logical fixes * Remove / Handle non-null assertions which are certainly unnecessary (e.g. in tests)
33 lines
643 B
TypeScript
33 lines
643 B
TypeScript
import atob from 'atob';
|
|
import logger from '../logger';
|
|
|
|
/**
|
|
* Check if a given string conforms to the structure of a JWT.
|
|
*/
|
|
export default function isJWT(string: string): boolean {
|
|
const parts = string.split('.');
|
|
|
|
// JWTs have the structure header.payload.signature
|
|
if (parts.length !== 3) return false;
|
|
|
|
// Check if all segments are base64 encoded
|
|
try {
|
|
atob(parts[0]);
|
|
atob(parts[1]);
|
|
atob(parts[2]);
|
|
} catch (err) {
|
|
logger.error(err);
|
|
return false;
|
|
}
|
|
|
|
// Check if the header and payload are valid JSON
|
|
try {
|
|
JSON.parse(atob(parts[0]));
|
|
JSON.parse(atob(parts[1]));
|
|
} catch {
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|