mirror of
https://github.com/janishutz/MusicPlayer.git
synced 2026-09-10 14:25:24 +02:00
feat(backend): login, most endpoints complete
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import crypto from 'node:crypto';
|
||||
|
||||
/**
|
||||
* Generate a token for e.g. login, etc
|
||||
* @param length - The number of characters of the token
|
||||
* @returns The generated token
|
||||
*/
|
||||
export const generateToken = ( length: number ): string => {
|
||||
let token = '';
|
||||
|
||||
const min = 45;
|
||||
const max = 122;
|
||||
|
||||
for ( let i = 0; i < length; i++ ) {
|
||||
const buf = new Uint8Array( 1 );
|
||||
|
||||
crypto.getRandomValues( buf );
|
||||
let randomNumber = Math.floor( ( buf[ 0 ] / 256 * ( max - min ) ) + min );
|
||||
|
||||
while (
|
||||
( 58 < randomNumber && randomNumber < 63 )
|
||||
|| ( 90 < randomNumber && randomNumber < 95 )
|
||||
|| ( 95 < randomNumber && randomNumber < 97 )
|
||||
) {
|
||||
const buf = new Uint8Array( 1 );
|
||||
|
||||
crypto.getRandomValues( buf );
|
||||
randomNumber = Math.floor( ( buf[ 0 ] / 256 * ( max - min ) ) + min );
|
||||
}
|
||||
|
||||
token += String.fromCharCode( randomNumber );
|
||||
}
|
||||
|
||||
return token;
|
||||
};
|
||||
Reference in New Issue
Block a user