auth.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. var token = require('token');
  2. var bcrypt = require('bcryptjs');
  3. // Parametrage token
  4. token.defaults.timeStep = 60 * 60 * 12; // Validité de 12 heures en seconde
  5. token.defaults.secret = 'f5152bfd5894ae15103690d16ca09c38';
  6. // Class auhtentification
  7. class Auth {
  8. isActivated() {
  9. return global.auth
  10. }
  11. generateToken(user) {
  12. if(user === undefined || user === null) {
  13. return false;
  14. }
  15. return token.generate(user);
  16. }
  17. invalidateToken(user, userToken) {
  18. if(user === undefined || user === null || userToken === undefined || userToken === null) {
  19. return false;
  20. }
  21. return token.invalidate(user, userToken);
  22. }
  23. passwordHash(password) {
  24. const salt = bcrypt.genSaltSync(10);
  25. return bcrypt.hashSync(password, salt);
  26. }
  27. passwordVerify(password, hash) {
  28. return bcrypt.compareSync(password, hash)
  29. }
  30. verify(user, userToken) {
  31. // Regarde si l'authentification est activée
  32. if(!this.isActivated()) {
  33. return true
  34. }
  35. // Verifie que l'utilisateur et le token n'est pas null
  36. if(user === undefined || user === null || userToken === undefined || userToken === null) {
  37. return false;
  38. }
  39. // Test la validitée du token
  40. switch(token.verify(user, userToken)) {
  41. case token.VALID:
  42. case token.EXPIRING:
  43. return true;
  44. case token.INVALID:
  45. return false;
  46. default:
  47. return false;
  48. }
  49. }
  50. }
  51. // Export
  52. let auth = new Auth();
  53. module.exports = auth;