35 lines
774 B
JavaScript
35 lines
774 B
JavaScript
|
import { decodeString } from 'vault/utils/b64';
|
||
|
|
||
|
/*
|
||
|
* @param token - Replication Secondary Activation Token
|
||
|
* @returns config Object if successful | undefined if not
|
||
|
*
|
||
|
*/
|
||
|
export default function(token) {
|
||
|
if (!token) {
|
||
|
return;
|
||
|
}
|
||
|
const tokenParts = token.split('.');
|
||
|
// config is the second item in the JWT
|
||
|
let [, configB64] = tokenParts;
|
||
|
let config;
|
||
|
|
||
|
if (tokenParts.length !== 3) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// JWTs strip padding from their b64 parts.
|
||
|
// since we're converting to a typed array before
|
||
|
// decoding back to utf-8, we need to add any padding back
|
||
|
while (configB64.length % 4 !== 0) {
|
||
|
configB64 = configB64 + '=';
|
||
|
}
|
||
|
try {
|
||
|
config = JSON.parse(decodeString(configB64));
|
||
|
} catch (e) {
|
||
|
// swallow error
|
||
|
}
|
||
|
|
||
|
return config;
|
||
|
}
|