|  | @@ -2,22 +2,61 @@ var token = require('token');
 | 
	
		
			
				|  |  |  var bcrypt = require('bcryptjs');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // Parametrage token
 | 
	
		
			
				|  |  | -token.defaults.timeStep = 60 * 60 * 12 // Validité de 12 heures en seconde
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -//Sync
 | 
	
		
			
				|  |  | -console.log('sync', bcrypt.compareSync('azerty', '$2y$10$IcQ32uKzQawg8g.kYuR/O.4y1kTSPHG0eZSMjACJKuFGa1VHM97Lu'));
 | 
	
		
			
				|  |  | -var salt = bcrypt.genSaltSync(10);
 | 
	
		
			
				|  |  | -console.log('sync', bcrypt.hashSync("qwerty", salt));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -//Async
 | 
	
		
			
				|  |  | -bcrypt.compare("azerty", '$2y$10$IcQ32uKzQawg8g.kYuR/O.4y1kTSPHG0eZSMjACJKuFGa1VHM97Lu', function(err, res) {
 | 
	
		
			
				|  |  | -    console.log('async', res);
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | -bcrypt.compare("azerty", '$2y$10$IcQ32uKzQawg8g.kYuR/O.4y1kTSPHG0eZSMjACJKuFGa1VHM97Lu').then((res) => {
 | 
	
		
			
				|  |  | -    console.log('async promise', res)
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | -bcrypt.genSalt(10, function(err, salt) {
 | 
	
		
			
				|  |  | -    bcrypt.hash("qwerty", salt, function(err, hash) {
 | 
	
		
			
				|  |  | -        console.log('async', hash);
 | 
	
		
			
				|  |  | -    });
 | 
	
		
			
				|  |  | -});
 | 
	
		
			
				|  |  | +token.defaults.timeStep = 60 * 60 * 12; // Validité de 12 heures en seconde
 | 
	
		
			
				|  |  | +token.defaults.secret = 'f5152bfd5894ae15103690d16ca09c38';
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +// Class auhtentification
 | 
	
		
			
				|  |  | +class Auth {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    isActivated() {
 | 
	
		
			
				|  |  | +        return global.auth
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    generateToken(user) {
 | 
	
		
			
				|  |  | +        if(user === undefined || user === null) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return token.generate(user);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    invalidateToken(user, userToken) {
 | 
	
		
			
				|  |  | +        if(user === undefined || user === null || userToken === undefined || userToken === null) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return token.invalidate(user, userToken);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    passwordHash(password) {
 | 
	
		
			
				|  |  | +        const salt = bcrypt.genSaltSync(10);
 | 
	
		
			
				|  |  | +        return bcrypt.hashSync(password, salt);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    passwordVerify(password, hash) {
 | 
	
		
			
				|  |  | +        return bcrypt.compareSync(password, hash)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    verify(user, userToken) {
 | 
	
		
			
				|  |  | +        // Regarde si l'authentification est activée
 | 
	
		
			
				|  |  | +        if(!this.isActivated()) {
 | 
	
		
			
				|  |  | +            return true
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // Verifie que l'utilisateur et le token n'est pas null
 | 
	
		
			
				|  |  | +        if(user === undefined || user === null || userToken === undefined || userToken === null) {
 | 
	
		
			
				|  |  | +            return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // Test la validitée du token
 | 
	
		
			
				|  |  | +        switch(token.verify(user, userToken)) {
 | 
	
		
			
				|  |  | +            case token.VALID:
 | 
	
		
			
				|  |  | +            case token.EXPIRING:
 | 
	
		
			
				|  |  | +                return true;
 | 
	
		
			
				|  |  | +            case token.INVALID:
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +            default:
 | 
	
		
			
				|  |  | +                return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +let auth = new Auth();
 | 
	
		
			
				|  |  | +module.exports = auth;
 |