1.0.6 • Published 2 years ago

woopear-cookieauthgraphcms-sveltekit v1.0.6

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

cookie authorization graphcms sveltekit

permet de creer un jwt
un cookie en httpOnly,
et de tester plus paramètrer
l'authorization du header (Bearer)

fonctionnement / utilisation

  • instancier un CookieWoo
const jwtCookie = new CookieWoo('myjwt', 60 * 60, 'mysecret from .env');
  • maintenant vous pouvez utiliser les fonctions de cette instance
    par exemple creer un cookie
const myCookie = jwtCookie.setCookie({
  email: 'john@mail.com',
  password: '123',
  adresse: 'mon adresse',
});

console.log(myCookie);
/*
output ...
{
  'Set-Cookie': 'myjwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9; Max-Age=3600; Path=/; HttpOnly; SameSite=Strict'
}

NOTE : le cookie sera beaucoup plus grand, celui-ci est pour l'exemple
...
*/
  • maintenant que l'instance cookie est créé, et que notre set-cookie
    est éffectué, nous pouvons tester notre cookie, pour faire cela rien de plus simple
    recuperer votre cookie et utiliser directement votre instance pour récuperer son contenue
    et ensuite faire vos tests sur sur donnée, si tout est OK votre vérification est faite ;-)
// recuperer la liste des cookies
const myCookieObjetc = jwtCookie.parseCookie(myCookie['Set-Cookie']);

console.log(myCookieObjetc);
/*
output ...
{
  myjwt: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9',
  'Max-Age': '3600',
  Path: '/',
  SameSite: 'Strict'
}
...
 */

// on test l'expiration et retourne les données contenu dans le cookie
const payload = jwtCookie.verifJwt<IPayloadJwt>(myCookieObjetc.myjwt);

console.log(payload);
/*
output ...
{
  email: 'john@mail.com',
  password: '123',
  adresse: 'mon adresse',
  iat: 1642957584,
  exp: 1642961184
}

NOTE : vous remarquerez qu'il vous renvoye l'objet que vous avez passé
en argument au moment de la creation du set-cookie
donc typer correctement la fonction verifJwt(), afin d'avoir accès
au proprieter correspondante, dans notre exemple on type verifJwt()
avec IPayloadJwt, ce qui veux dire que je peux faire apres 
payload.email je suis sur de l'avoir ;-), ATTENTION ici on a mis le mot de passe  
on ne le conseil pas, mais chacun fait comme bon lui semble
...
 */

crypto

CryptoWoo est une class simple instancier avec un secret
ensuite utiliser cette instance avec des fonctions interne à la class
pour creer, verifier, comparer des hash

  • fontion de la class
  1. encrypt() => fonction qui hash la string passé en argument
  2. decrypt() => fonction qui décrypt le hash passé en argument
  3. compareHash() => fonction qui compare une string à un hash
  • instanciation / hashage
// instancier
const myCrypto = new CryptoWoo('mysecret from .env');

// hash
const hash = myCrypto.encrypt('mon mot de passe');

console.log('My hash : ', hash);

/*
output ...
My hash : U2FsdGVkX19+SHHDPWxMc+/bgYlfq70LMMza2wRJpC9U+bu37CX4cRZ9QV8Zz7n1
...
 */
  • decrypt
// decrypte
const decrypt = myCrypto.decrypt(hash);

console.log('My decrypt : ', decrypt);

/*
output ...
My decrypt :  mon mot de passe
...
 */
  • compare
// compare
const response = myCrypto.compareHash('mon mot de passe', hash);

console.log('Response compare : ', response);

/*
output ...
Response compare :  true
...
 */
1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago