mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-03-28 15:40:56 +03:00
Compare commits
3 Commits
add-ldap-a
...
arm-autobu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70d89d310c | ||
|
|
c48aaaf13c | ||
|
|
6cf7ea193a |
@@ -1,11 +1,15 @@
|
|||||||
FROM arm32v7/alpine:3.12 as frontend
|
FROM alpine:3.12 as frontend
|
||||||
|
|
||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
npm
|
npm \
|
||||||
|
curl
|
||||||
|
|
||||||
RUN npm install -g @angular/cli
|
RUN npm install -g @angular/cli
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
|
RUN curl -L https://github.com/balena-io/qemu/releases/download/v3.0.0%2Bresin/qemu-3.0.0+resin-arm.tar.gz | tar zxvf - -C . && mv qemu-3.0.0+resin-arm/qemu-arm-static .
|
||||||
|
|
||||||
COPY [ "package.json", "package-lock.json", "/build/" ]
|
COPY [ "package.json", "package-lock.json", "/build/" ]
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
@@ -17,7 +21,7 @@ RUN ng build --prod
|
|||||||
|
|
||||||
FROM arm32v7/alpine:3.12
|
FROM arm32v7/alpine:3.12
|
||||||
|
|
||||||
COPY qemu-arm-static /usr/bin
|
COPY --from=frontend /build/qemu-arm-static /usr/bin
|
||||||
|
|
||||||
ENV UID=1000 \
|
ENV UID=1000 \
|
||||||
GID=1000 \
|
GID=1000 \
|
||||||
|
|||||||
@@ -2821,7 +2821,8 @@ app.post('/api/auth/register'
|
|||||||
, optionalJwt
|
, optionalJwt
|
||||||
, auth_api.registerUser);
|
, auth_api.registerUser);
|
||||||
app.post('/api/auth/login'
|
app.post('/api/auth/login'
|
||||||
, auth_api.passport.authenticate(['local', 'ldapauth'], {})
|
, auth_api.passport.authenticate('local', {})
|
||||||
|
, auth_api.passport.authorize('local')
|
||||||
, auth_api.generateJWT
|
, auth_api.generateJWT
|
||||||
, auth_api.returnAuthResponse
|
, auth_api.returnAuthResponse
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -36,15 +36,7 @@
|
|||||||
},
|
},
|
||||||
"Users": {
|
"Users": {
|
||||||
"base_path": "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": {
|
"Advanced": {
|
||||||
"use_default_downloading_agent": true,
|
"use_default_downloading_agent": true,
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ var bcrypt = require('bcryptjs');
|
|||||||
|
|
||||||
|
|
||||||
var LocalStrategy = require('passport-local').Strategy;
|
var LocalStrategy = require('passport-local').Strategy;
|
||||||
var LdapStrategy = require('passport-ldapauth');
|
|
||||||
var JwtStrategy = require('passport-jwt').Strategy,
|
var JwtStrategy = require('passport-jwt').Strategy,
|
||||||
ExtractJwt = require('passport-jwt').ExtractJwt;
|
ExtractJwt = require('passport-jwt').ExtractJwt;
|
||||||
|
|
||||||
@@ -91,7 +90,24 @@ exports.registerUser = function(req, res) {
|
|||||||
|
|
||||||
bcrypt.hash(plaintextPassword, saltRounds)
|
bcrypt.hash(plaintextPassword, saltRounds)
|
||||||
.then(function(hash) {
|
.then(function(hash) {
|
||||||
let new_user = generateUserObject(userid, username, 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: []
|
||||||
|
};
|
||||||
// check if user exists
|
// check if user exists
|
||||||
if (users_db.get('users').find({uid: userid}).value()) {
|
if (users_db.get('users').find({uid: userid}).value()) {
|
||||||
// user id is taken!
|
// user id is taken!
|
||||||
@@ -137,43 +153,52 @@ exports.registerUser = function(req, res) {
|
|||||||
|
|
||||||
|
|
||||||
exports.passport.use(new LocalStrategy({
|
exports.passport.use(new LocalStrategy({
|
||||||
usernameField: 'username',
|
usernameField: 'userid',
|
||||||
passwordField: 'password'},
|
passwordField: 'password'},
|
||||||
function(username, password, done) {
|
function(username, password, done) {
|
||||||
const user = users_db.get('users').find({name: username}).value();
|
const user = users_db.get('users').find({name: username}).value();
|
||||||
if (!user) { logger.error(`User ${username} not found`); return done(null, false); }
|
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) {
|
if (user) {
|
||||||
return done(null, bcrypt.compareSync(password, user.passhash) ? user : false);
|
return done(null, bcrypt.compareSync(password, user.passhash) ? user : false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
var getLDAPConfiguration = function(req, callback) {
|
/*passport.use(new BasicStrategy(
|
||||||
const ldap_config = config_api.getConfigItem('ytdl_ldap_config');
|
function(userid, plainTextPassword, done) {
|
||||||
const opts = {server: ldap_config};
|
const user = users_db.get('users').find({name: userid}).value();
|
||||||
callback(null, opts);
|
if (user) {
|
||||||
};
|
var hashedPwd = user.passhash;
|
||||||
|
return bcrypt.compare(plainTextPassword, hashedPwd);
|
||||||
exports.passport.use(new LdapStrategy(getLDAPConfiguration,
|
} else {
|
||||||
function(user, done) {
|
return false;
|
||||||
// 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
|
* Generating/Signing a JWT token
|
||||||
@@ -513,26 +538,3 @@ function getToken(queryParams) {
|
|||||||
return null;
|
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;
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -213,15 +213,7 @@ DEFAULT_CONFIG = {
|
|||||||
},
|
},
|
||||||
"Users": {
|
"Users": {
|
||||||
"base_path": "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": {
|
"Advanced": {
|
||||||
"use_default_downloading_agent": true,
|
"use_default_downloading_agent": true,
|
||||||
|
|||||||
@@ -112,14 +112,6 @@ let CONFIG_ITEMS = {
|
|||||||
'key': 'ytdl_allow_registration',
|
'key': 'ytdl_allow_registration',
|
||||||
'path': 'YoutubeDLMaterial.Users.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
|
// Advanced
|
||||||
'ytdl_use_default_downloading_agent': {
|
'ytdl_use_default_downloading_agent': {
|
||||||
|
|||||||
275
backend/package-lock.json
generated
275
backend/package-lock.json
generated
@@ -4,89 +4,6 @@
|
|||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"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": {
|
"abbrev": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
|
||||||
@@ -252,14 +169,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
|
||||||
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
|
"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": {
|
"balanced-match": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||||
@@ -406,17 +315,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/buffers/-/buffers-0.1.1.tgz",
|
||||||
"integrity": "sha1-skV5w77U1tOWru5tmorn9Ugqt7s="
|
"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": {
|
"busboy": {
|
||||||
"version": "0.2.14",
|
"version": "0.2.14",
|
||||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
|
"resolved": "https://registry.npmjs.org/busboy/-/busboy-0.2.14.tgz",
|
||||||
@@ -841,15 +739,6 @@
|
|||||||
"is-obj": "^1.0.0"
|
"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": {
|
"duplexer2": {
|
||||||
"version": "0.1.4",
|
"version": "0.1.4",
|
||||||
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
|
||||||
@@ -1583,72 +1472,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"listenercount": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/listenercount/-/listenercount-1.0.1.tgz",
|
||||||
@@ -1849,12 +1672,6 @@
|
|||||||
"minimist": "^1.2.5"
|
"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": {
|
"ms": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
|
||||||
@@ -1900,41 +1717,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"mz": {
|
||||||
"version": "2.7.0",
|
"version": "2.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
|
||||||
@@ -1945,23 +1727,11 @@
|
|||||||
"thenify-all": "^1.0.0"
|
"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": {
|
"nanoid": {
|
||||||
"version": "2.1.11",
|
"version": "2.1.11",
|
||||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz",
|
||||||
"integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA=="
|
"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": {
|
"negotiator": {
|
||||||
"version": "0.6.2",
|
"version": "0.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
|
||||||
@@ -2148,17 +1918,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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": {
|
"passport-local": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz",
|
||||||
@@ -2212,11 +1971,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
|
||||||
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
|
"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": {
|
"prepend-http": {
|
||||||
"version": "1.0.4",
|
"version": "1.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
|
||||||
@@ -2412,12 +2166,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
|
||||||
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
|
"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": {
|
"safer-buffer": {
|
||||||
"version": "2.1.2",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
||||||
@@ -2934,29 +2682,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
|
"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": {
|
"verror": {
|
||||||
"version": "1.10.0",
|
"version": "1.10.0",
|
||||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
|
|||||||
@@ -48,7 +48,6 @@
|
|||||||
"passport": "^0.4.1",
|
"passport": "^0.4.1",
|
||||||
"passport-http": "^0.3.0",
|
"passport-http": "^0.3.0",
|
||||||
"passport-jwt": "^4.0.0",
|
"passport-jwt": "^4.0.0",
|
||||||
"passport-ldapauth": "^2.1.4",
|
|
||||||
"passport-local": "^1.0.0",
|
"passport-local": "^1.0.0",
|
||||||
"progress": "^2.0.3",
|
"progress": "^2.0.3",
|
||||||
"ps-node": "^0.1.6",
|
"ps-node": "^0.1.6",
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# downloads a local copy of qemu on docker-hub build machines
|
|
||||||
curl -L https://github.com/balena-io/qemu/releases/download/v3.0.0%2Bresin/qemu-3.0.0+resin-arm.tar.gz | tar zxvf - -C . && mv qemu-3.0.0+resin-arm/qemu-arm-static .
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# Register qemu-*-static for all supported processors except the
|
|
||||||
# current one, but also remove all registered binfmt_misc before
|
|
||||||
docker run --rm --privileged multiarch/qemu-user-static:register --reset
|
|
||||||
@@ -384,7 +384,7 @@ export class PostsService implements CanActivate {
|
|||||||
|
|
||||||
// user methods
|
// user methods
|
||||||
login(username, password) {
|
login(username, password) {
|
||||||
const call = this.http.post(this.path + 'auth/login', {username: username, password: password}, this.httpOptions);
|
const call = this.http.post(this.path + 'auth/login', {userid: username, password: password}, this.httpOptions);
|
||||||
return call;
|
return call;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -292,50 +292,8 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
<mat-tab *ngIf="postsService.config && postsService.config.Advanced.multi_user_mode" label="Users" i18n-label="Users settings label">
|
<mat-tab *ngIf="postsService.config && postsService.config.Advanced.multi_user_mode" label="Users" i18n-label="Users settings label">
|
||||||
|
<div style="margin-left: 48px; margin-top: 24px;">
|
||||||
<div style="margin-left: 48px; margin-top: 24px; margin-bottom: -25px;">
|
<mat-checkbox color="accent" [(ngModel)]="new_config['Users']['allow_registration']"><ng-container i18n="Allow registration setting">Allow user registration</ng-container></mat-checkbox>
|
||||||
<div>
|
|
||||||
<mat-checkbox color="accent" [(ngModel)]="new_config['Users']['allow_registration']"><ng-container i18n="Allow registration setting">Allow user registration</ng-container></mat-checkbox>
|
|
||||||
</div>
|
|
||||||
<mat-divider></mat-divider>
|
|
||||||
<mat-form-field style="margin-top: 15px;">
|
|
||||||
<mat-select [(ngModel)]="new_config['Users']['auth_method']" placeholder="Auth method" i18n-placeholder="Auth method select">
|
|
||||||
<mat-option value="internal">
|
|
||||||
<ng-container i18n="Internal auth method">Internal</ng-container>
|
|
||||||
</mat-option>
|
|
||||||
<mat-option value="ldap">
|
|
||||||
<ng-container i18n="LDAP auth method">LDAP</ng-container>
|
|
||||||
</mat-option>
|
|
||||||
</mat-select>
|
|
||||||
</mat-form-field>
|
|
||||||
<div *ngIf="new_config['Users']['auth_method'] === 'ldap'">
|
|
||||||
<div>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput i18n-placeholder="LDAP URL" placeholder="LDAP URL" [(ngModel)]="new_config['Users']['ldap_config']['url']">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput i18n-placeholder="Bind DN" placeholder="Bind DN" [(ngModel)]="new_config['Users']['ldap_config']['bindDN']">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput i18n-placeholder="Bind Credentials" placeholder="Bind Credentials" [(ngModel)]="new_config['Users']['ldap_config']['bindCredentials']">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput i18n-placeholder="Search Base" placeholder="Search Base" [(ngModel)]="new_config['Users']['ldap_config']['searchBase']">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<mat-form-field>
|
|
||||||
<input matInput i18n-placeholder="Search Filter" placeholder="Search Filter" [(ngModel)]="new_config['Users']['ldap_config']['searchFilter']">
|
|
||||||
</mat-form-field>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<mat-divider></mat-divider>
|
|
||||||
</div>
|
</div>
|
||||||
<app-modify-users></app-modify-users>
|
<app-modify-users></app-modify-users>
|
||||||
</mat-tab>
|
</mat-tab>
|
||||||
|
|||||||
Reference in New Issue
Block a user