]>
git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/blob - src/auth.js
3 var passport
= require('passport'),
4 path
= require('path'),
5 safe
= require('safetydance'),
6 bcrypt
= require('bcryptjs'),
7 LdapStrategy
= require('passport-ldapjs').Strategy
;
9 var LOCAL_AUTH_FILE
= path
.resolve(process
.env
.LOCAL_AUTH_FILE
|| './.users.json');
11 passport
.serializeUser(function (user
, done
) {
12 console
.log('serializeUser', user
);
16 passport
.deserializeUser(function (id
, done
) {
17 console
.log('deserializeUser', id
);
18 done(null, { uid: id
});
21 var LDAP_URL
= process
.env
.LDAP_URL
;
22 var LDAP_USERS_BASE_DN
= process
.env
.LDAP_USERS_BASE_DN
;
24 if (LDAP_URL
&& LDAP_USERS_BASE_DN
) {
25 console
.log('Enable ldap auth');
27 exports
.verify
= passport
.authenticate('ldap');
29 console
.log('Use local user file:', LOCAL_AUTH_FILE
);
31 exports
.verify = function (req
, res
, next
) {
32 var users
= safe
.JSON
.parse(safe
.fs
.readFileSync(LOCAL_AUTH_FILE
));
33 if (!users
) return res
.send(401);
34 if (!users
[req
.query
.username
]) return res
.send(401);
36 bcrypt
.compare(req
.query
.password
, users
[req
.query
.username
].passwordHash
, function (error
, valid
) {
37 if (error
|| !valid
) return res
.send(401);
47 base: LDAP_USERS_BASE_DN
,
49 filter: '(|(username={{username}})(mail={{username}}))',
50 attributes: ['displayname', 'username', 'mail', 'uid'],
54 usernameField: 'username',
55 passwordField: 'password',
58 passport
.use(new LdapStrategy(opts
, function (profile
, done
) {