X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fauth.js;h=d575d601d1c91c0a84ed3202e37cb30b87c6c66c;hb=476177380452c9c7c5b1624805feedc824c5995e;hp=a885d492eb2a68cf5f9e572b02fc01188d01ca40;hpb=c2c00fca7dccb6e512a0f01bc87db129538765ef;p=perso%2FImmae%2FProjets%2FNodejs%2FSurfer.git diff --git a/src/auth.js b/src/auth.js index a885d49..d575d60 100644 --- a/src/auth.js +++ b/src/auth.js @@ -19,11 +19,13 @@ const LOGIN_TOKEN_PREFIX = 'login-'; const API_TOKEN_PREFIX = 'api-'; if (AUTH_METHOD === 'ldap') { - console.log('Use ldap auth'); + console.log('Using ldap auth'); } else { - console.log(`Use local auth file ${LOCAL_AUTH_FILE}`); + console.log(`Using local auth file at: ${LOCAL_AUTH_FILE}`); } +var gConfig = {}; + var tokenStore = { data: {}, save: function () { @@ -53,7 +55,7 @@ var tokenStore = { // load token store data if any try { - console.log(`Using tokenstore file: ${TOKENSTORE_FILE}`); + console.log(`Using tokenstore file at: ${TOKENSTORE_FILE}`); tokenStore.data = JSON.parse(fs.readFileSync(TOKENSTORE_FILE, 'utf-8')); } catch (e) { // start with empty token store @@ -69,8 +71,8 @@ function verifyUser(username, password, callback) { ldapClient.bind(process.env.CLOUDRON_LDAP_BIND_DN, process.env.CLOUDRON_LDAP_BIND_PASSWORD, function (error) { if (error) return callback(error); - var filter = `(|(uid=${username})(mail=${username})(username=${username})(sAMAccountName=${username}))`; - ldapClient.search(process.env.CLOUDRON_LDAP_USERS_BASE_DN, { filter: filter }, function (error, result) { + var filter = process.env.CLOUDRON_LDAP_FILTER.replace(/\{username\}/g, username); + ldapClient.search(process.env.CLOUDRON_LDAP_USERS_BASE_DN, { filter: filter, scope: "sub" }, function (error, result) { if (error) return callback(error); var items = []; @@ -103,6 +105,10 @@ function verifyUser(username, password, callback) { } } +exports.init = function (config) { + gConfig = config; +}; + exports.login = function (req, res, next) { verifyUser(req.body.username, req.body.password, function (error, user) { if (error) return next(new HttpError(401, 'Invalid credentials')); @@ -130,6 +136,11 @@ exports.verify = function (req, res, next) { }; +exports.verifyIfNeeded = function (req, res, next) { + if (!gConfig.folderListingEnabled) return exports.verify(req, res, next); + next(); +}; + exports.logout = function (req, res, next) { var accessToken = req.query.access_token || req.body.accessToken;