From babba9aa30a465f4ad8054c9155fecd785963171 Mon Sep 17 00:00:00 2001 From: Isaac Abadi Date: Wed, 26 Aug 2020 04:18:29 -0400 Subject: [PATCH] Added ability to register/login through LDAP - Added ability to edit LDAP settings and whether to use LDAP or not in the users tab in the settings --- backend/app.js | 3 +- backend/appdata/default.json | 10 +- backend/authentication/auth.js | 100 ++++----- backend/config.js | 10 +- backend/consts.js | 8 + backend/package-lock.json | 275 +++++++++++++++++++++++ backend/package.json | 1 + src/app/posts.services.ts | 2 +- src/app/settings/settings.component.html | 46 +++- 9 files changed, 397 insertions(+), 58 deletions(-) diff --git a/backend/app.js b/backend/app.js index 1fa6d5e..9058e51 100644 --- a/backend/app.js +++ b/backend/app.js @@ -2821,8 +2821,7 @@ app.post('/api/auth/register' , optionalJwt , auth_api.registerUser); app.post('/api/auth/login' - , auth_api.passport.authenticate('local', {}) - , auth_api.passport.authorize('local') + , auth_api.passport.authenticate(['local', 'ldapauth'], {}) , auth_api.generateJWT , auth_api.returnAuthResponse ); diff --git a/backend/appdata/default.json b/backend/appdata/default.json index b1f7e30..6646e71 100644 --- a/backend/appdata/default.json +++ b/backend/appdata/default.json @@ -36,7 +36,15 @@ }, "Users": { "base_path": "users/", - "allow_registration": true + "allow_registration": true, + "auth_method": "internal", + "ldap_config": { + "url": "ldap://localhost:389", + "bindDN": "cn=root", + "bindCredentials": "secret", + "searchBase": "ou=passport-ldapauth", + "searchFilter": "(uid={{username}})" + } }, "Advanced": { "use_default_downloading_agent": true, diff --git a/backend/authentication/auth.js b/backend/authentication/auth.js index 78658ab..a64ca19 100644 --- a/backend/authentication/auth.js +++ b/backend/authentication/auth.js @@ -9,6 +9,7 @@ var bcrypt = require('bcryptjs'); var LocalStrategy = require('passport-local').Strategy; +var LdapStrategy = require('passport-ldapauth'); var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; @@ -90,24 +91,7 @@ exports.registerUser = function(req, res) { bcrypt.hash(plaintextPassword, saltRounds) .then(function(hash) { - let new_user = { - name: username, - uid: userid, - passhash: hash, - files: { - audio: [], - video: [] - }, - playlists: { - audio: [], - video: [] - }, - subscriptions: [], - created: Date.now(), - role: userid === 'admin' ? 'admin' : 'user', - permissions: [], - permission_overrides: [] - }; + let new_user = generateUserObject(userid, username, hash); // check if user exists if (users_db.get('users').find({uid: userid}).value()) { // user id is taken! @@ -153,52 +137,43 @@ exports.registerUser = function(req, res) { exports.passport.use(new LocalStrategy({ - usernameField: 'userid', + usernameField: 'username', passwordField: 'password'}, function(username, password, done) { const user = users_db.get('users').find({name: username}).value(); if (!user) { logger.error(`User ${username} not found`); return done(null, false); } + if (user.auth_method && user.auth_method !== 'internal') { return done(null, false); } if (user) { return done(null, bcrypt.compareSync(password, user.passhash) ? user : false); } } )); -/*passport.use(new BasicStrategy( - function(userid, plainTextPassword, done) { - const user = users_db.get('users').find({name: userid}).value(); - if (user) { - var hashedPwd = user.passhash; - return bcrypt.compare(plainTextPassword, hashedPwd); - } else { - return false; +var getLDAPConfiguration = function(req, callback) { + const ldap_config = config_api.getConfigItem('ytdl_ldap_config'); + const opts = {server: ldap_config}; + callback(null, opts); +}; + +exports.passport.use(new LdapStrategy(getLDAPConfiguration, + function(user, done) { + // check if ldap auth is enabled + const ldap_enabled = config_api.getConfigItem('ytdl_auth_method') === 'ldap'; + if (!ldap_enabled) return done(null, false); + + const user_uid = user.uid; + let db_user = users_db.get('users').find({uid: user_uid}).value(); + if (!db_user) { + // generate DB user + let new_user = generateUserObject(user_uid, user_uid, null, 'ldap'); + users_db.get('users').push(new_user).write(); + db_user = new_user; + logger.verbose(`Generated new user ${user_uid} using LDAP`); } + return done(null, db_user); } )); -*/ - -/************************************************************* - * This is a wrapper for auth.passport.authenticate(). - * We use this to change WWW-Authenticate header so - * the browser doesn't pop-up challenge dialog box by default. - * Browser's will pop-up up dialog when status is 401 and - * "WWW-Authenticate:Basic..." - *************************************************************/ -/* -exports.authenticateViaPassport = function(req, res, next) { - exports.passport.authenticate('basic',{session:false}, - function(err, user, info) { - if(!user){ - res.set('WWW-Authenticate', 'x'+info); // change to xBasic - res.status(401).send('Invalid Authentication'); - } else { - req.user = user; - next(); - } - } - )(req, res, next); -}; -*/ + /********************************** * Generating/Signing a JWT token @@ -538,3 +513,26 @@ function getToken(queryParams) { return null; } }; + +function generateUserObject(userid, username, hash, auth_method = 'internal') { + let new_user = { + name: username, + uid: userid, + passhash: auth_method === 'internal' ? hash : null, + files: { + audio: [], + video: [] + }, + playlists: { + audio: [], + video: [] + }, + subscriptions: [], + created: Date.now(), + role: userid === 'admin' && auth_method === 'internal' ? 'admin' : 'user', + permissions: [], + permission_overrides: [], + auth_method: auth_method + }; + return new_user; +} diff --git a/backend/config.js b/backend/config.js index 5e210a6..6a1a3c1 100644 --- a/backend/config.js +++ b/backend/config.js @@ -213,7 +213,15 @@ DEFAULT_CONFIG = { }, "Users": { "base_path": "users/", - "allow_registration": true + "allow_registration": true, + "auth_method": "internal", + "ldap_config": { + "url": "ldap://localhost:389", + "bindDN": "cn=root", + "bindCredentials": "secret", + "searchBase": "ou=passport-ldapauth", + "searchFilter": "(uid={{username}})" + } }, "Advanced": { "use_default_downloading_agent": true, diff --git a/backend/consts.js b/backend/consts.js index ff0b033..950a1d0 100644 --- a/backend/consts.js +++ b/backend/consts.js @@ -112,6 +112,14 @@ let CONFIG_ITEMS = { 'key': 'ytdl_allow_registration', 'path': 'YoutubeDLMaterial.Users.allow_registration' }, + 'ytdl_auth_method': { + 'key': 'ytdl_auth_method', + 'path': 'YoutubeDLMaterial.Users.auth_method' + }, + 'ytdl_ldap_config': { + 'key': 'ytdl_ldap_config', + 'path': 'YoutubeDLMaterial.Users.ldap_config' + }, // Advanced 'ytdl_use_default_downloading_agent': { diff --git a/backend/package-lock.json b/backend/package-lock.json index 295f7e9..1e4f7ab 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -4,6 +4,89 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/connect": { + "version": "3.4.33", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", + "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "requires": { + "@types/node": "*" + } + }, + "@types/express": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", + "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "*", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.9", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", + "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/ldapjs": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/ldapjs/-/ldapjs-1.0.9.tgz", + "integrity": "sha512-3PvY7Drp1zoLbcGlothCAkoc5o6Jp9KvUPwHadlHyKp3yPvyeIh7w2zQc9UXMzgDRkoeGXUEODtbEs5XCh9ZyA==", + "requires": { + "@types/node": "*" + } + }, + "@types/mime": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", + "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + }, + "@types/node": { + "version": "14.6.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.6.0.tgz", + "integrity": "sha512-mikldZQitV94akrc4sCcSjtJfsTKt4p+e/s0AGscVA6XArQ9kFclP+ZiYUMnq987rc6QlYxXv/EivqlfSLxpKA==" + }, + "@types/passport": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/passport/-/passport-1.0.4.tgz", + "integrity": "sha512-h5OfAbfBBYSzjeU0GTuuqYEk9McTgWeGQql9g3gUw2/NNCfD7VgExVRYJVVeU13Twn202Mvk9BT0bUrl30sEgA==", + "requires": { + "@types/express": "*" + } + }, + "@types/qs": { + "version": "6.9.4", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", + "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + }, + "@types/range-parser": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + }, + "@types/serve-static": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", + "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "requires": { + "@types/express-serve-static-core": "*", + "@types/mime": "*" + } + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -169,6 +252,14 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", + "requires": { + "precond": "0.2" + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -315,6 +406,17 @@ "resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz", "integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s=" }, + "bunyan": { + "version": "1.8.14", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.14.tgz", + "integrity": "sha512-LlahJUxXzZLuw/hetUQJmRgZ1LF6+cr5TPpRj6jf327AsiIq2jhYEH4oqUUkVKTor+9w2BT3oxVwhzE5lw9tcg==", + "requires": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, "busboy": { "version": "0.2.14", "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz", @@ -739,6 +841,15 @@ "is-obj": "^1.0.0" } }, + "dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "optional": true, + "requires": { + "nan": "^2.14.0" + } + }, "duplexer2": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", @@ -1472,6 +1583,72 @@ } } }, + "ldap-filter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.2.2.tgz", + "integrity": "sha1-8rhCvguG2jNSeYUFsx68rlkNd9A=", + "requires": { + "assert-plus": "0.1.5" + }, + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha1-7nQAlBMALYTOxyGcasgRgS5yMWA=" + } + } + }, + "ldapauth-fork": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/ldapauth-fork/-/ldapauth-fork-4.3.3.tgz", + "integrity": "sha512-x76VpQ5ZqkwAJmqwcD6KIwDiNEbgIGIPGwC/eA17e1dxWhlTx36w0DlLOFwjTuZ2iuaLTsZsUprlVqvSlwc/1Q==", + "requires": { + "@types/ldapjs": "^1.0.0", + "@types/node": "*", + "bcryptjs": "^2.4.0", + "ldapjs": "^1.0.2", + "lru-cache": "^5.1.1" + }, + "dependencies": { + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + } + } + }, + "ldapjs": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-1.0.2.tgz", + "integrity": "sha1-VE/3Ayt7g8aPBwEyjZKXqmlDQPk=", + "requires": { + "asn1": "0.2.3", + "assert-plus": "^1.0.0", + "backoff": "^2.5.0", + "bunyan": "^1.8.3", + "dashdash": "^1.14.0", + "dtrace-provider": "~0.8", + "ldap-filter": "0.2.2", + "once": "^1.4.0", + "vasync": "^1.6.4", + "verror": "^1.8.1" + }, + "dependencies": { + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=" + } + } + }, "listenercount": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz", @@ -1672,6 +1849,12 @@ "minimist": "^1.2.5" } }, + "moment": { + "version": "2.27.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", + "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==", + "optional": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -1717,6 +1900,41 @@ } } }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "requires": { + "glob": "^6.0.1" + } + } + } + }, "mz": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", @@ -1727,11 +1945,23 @@ "thenify-all": "^1.0.0" } }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "optional": true + }, "nanoid": { "version": "2.1.11", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -1918,6 +2148,17 @@ } } }, + "passport-ldapauth": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/passport-ldapauth/-/passport-ldapauth-2.1.4.tgz", + "integrity": "sha512-VeVL69ZK+cpJe0DKMSGuwcf7k+V4dr0U0Y7ZhXL785pcRb5gRA6qYZfIH+XTsAzwqTK9l0Dn3Ds4weOZ1jKkLQ==", + "requires": { + "@types/node": "*", + "@types/passport": "^1.0.0", + "ldapauth-fork": "^4.3.2", + "passport-strategy": "^1.0.0" + } + }, "passport-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", @@ -1971,6 +2212,11 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -2166,6 +2412,12 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -2682,6 +2934,29 @@ "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vasync": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=", + "requires": { + "verror": "1.6.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" + }, + "verror": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", + "requires": { + "extsprintf": "1.2.0" + } + } + } + }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", diff --git a/backend/package.json b/backend/package.json index f015272..6e70aa0 100644 --- a/backend/package.json +++ b/backend/package.json @@ -48,6 +48,7 @@ "passport": "^0.4.1", "passport-http": "^0.3.0", "passport-jwt": "^4.0.0", + "passport-ldapauth": "^2.1.4", "passport-local": "^1.0.0", "progress": "^2.0.3", "ps-node": "^0.1.6", diff --git a/src/app/posts.services.ts b/src/app/posts.services.ts index c23548b..e53fe7c 100644 --- a/src/app/posts.services.ts +++ b/src/app/posts.services.ts @@ -384,7 +384,7 @@ export class PostsService implements CanActivate { // user methods login(username, password) { - const call = this.http.post(this.path + 'auth/login', {userid: username, password: password}, this.httpOptions); + const call = this.http.post(this.path + 'auth/login', {username: username, password: password}, this.httpOptions); return call; } diff --git a/src/app/settings/settings.component.html b/src/app/settings/settings.component.html index a48e81a..ba59232 100644 --- a/src/app/settings/settings.component.html +++ b/src/app/settings/settings.component.html @@ -292,8 +292,50 @@ -
- Allow user registration + +
+
+ Allow user registration +
+ + + + + Internal + + + LDAP + + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+