refactor: token generator can use a custom alphabet

This commit is contained in:
Corentin Thomasset 2022-08-24 00:09:16 +02:00
parent a77a82f5a2
commit 59ec6293b6
No known key found for this signature in database
GPG key ID: DBD997E935996158

View file

@ -6,19 +6,23 @@ export function createToken({
withNumbers = true, withNumbers = true,
withSymbols = false, withSymbols = false,
length = 64, length = 64,
alphabet,
}: { }: {
withUppercase?: boolean; withUppercase?: boolean;
withLowercase?: boolean; withLowercase?: boolean;
withNumbers?: boolean; withNumbers?: boolean;
withSymbols?: boolean; withSymbols?: boolean;
length?: number; length?: number;
alphabet?: string;
}) { }) {
const alphabet = [ const allAlphabet =
alphabet ??
[
...(withUppercase ? 'ABCDEFGHIJKLMOPQRSTUVWXYZ' : ''), ...(withUppercase ? 'ABCDEFGHIJKLMOPQRSTUVWXYZ' : ''),
...(withLowercase ? 'abcdefghijklmopqrstuvwxyz' : ''), ...(withLowercase ? 'abcdefghijklmopqrstuvwxyz' : ''),
...(withNumbers ? '0123456789' : ''), ...(withNumbers ? '0123456789' : ''),
...(withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : ''), ...(withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : ''),
].join(''); ].join('');
return shuffleString(alphabet.repeat(length)).substring(0, length); return shuffleString(allAlphabet.repeat(length)).substring(0, length);
} }