fixes
This commit is contained in:
parent
664127cdbc
commit
743619e4cf
@ -52,7 +52,7 @@ class Server extends EventEmitter {
|
||||
this.mariadb = new MariaDB(this, { options: databases.mariadb, MARIA_HOST, MARIA_USER, MARIA_PORT, MARIA_PASS, MARIA_DB });
|
||||
this.mongodb = new MongoDB(this, { options: databases.mongodb, MONGO_HOST, MONGO_USER, MONGO_PORT, MONGO_PASS, MONGO_DB });
|
||||
this.userDatabase = new UserDatabase(this, this.mongodb, { validUserTypes });
|
||||
this.authenticator = new Authenticator(this, this.app, this.userDatabase, {
|
||||
this.authenticator = new Authenticator(this, this.userDatabase, {
|
||||
mongo: this.mongodb,
|
||||
secret: SECRET,
|
||||
discordID: DISCORD_ID,
|
||||
@ -92,7 +92,7 @@ class Server extends EventEmitter {
|
||||
this.userDatabase.init();
|
||||
|
||||
this.logger.info('Loading endpoints');
|
||||
this.registry.loadEndpoints();
|
||||
await this.registry.loadEndpoints();
|
||||
this.logger.debug(this.registry.print);
|
||||
|
||||
this.logger.info('Creating http server');
|
||||
|
@ -27,7 +27,7 @@ class Authenticator {
|
||||
* }
|
||||
* @memberof Authenticator
|
||||
*/
|
||||
constructor (server, express, users, {
|
||||
constructor (server, users, {
|
||||
mongo, secret, discordID, discordSecret, callbackURL, discordScope, discordVersion,
|
||||
cookie = { }
|
||||
}) {
|
||||
@ -41,7 +41,7 @@ class Authenticator {
|
||||
|
||||
cookie = { maxAge: 0.5 * 24 * 60 * 60 * 1000, secure: false, ...cookie };
|
||||
cookie.secure = cookie.secure && process.env.NODE_ENV !== 'development';
|
||||
express.use(session({
|
||||
server.app.use(session({
|
||||
cookie,
|
||||
store: MongoStore.create({ client: mongo.client, dbName: mongo.database, touchAfter: 600 }),
|
||||
secret,
|
||||
@ -49,8 +49,8 @@ class Authenticator {
|
||||
saveUninitialized: true
|
||||
}));
|
||||
|
||||
express.use(Passport.initialize());
|
||||
express.use(Passport.session());
|
||||
server.app.use(Passport.initialize());
|
||||
server.app.use(Passport.session());
|
||||
|
||||
Passport.serializeUser((user, callback) => {
|
||||
callback(null, user.id);
|
||||
@ -61,7 +61,8 @@ class Authenticator {
|
||||
callback(null, user);
|
||||
});
|
||||
|
||||
Passport.use(new Strategy({
|
||||
// TODO: Should probably allow injection of strategies instead of hardcoding this this through a function
|
||||
Passport.use('discord', new Strategy({
|
||||
clientID: discordID, clientSecret: discordSecret, callbackURL, scope: discordScope, version: discordVersion
|
||||
}, async (accessToken, refreshToken, profile, callback) => {
|
||||
this.logger.info(`${profile.username} (${profile.id}) is logging in.`);
|
||||
@ -71,12 +72,19 @@ class Authenticator {
|
||||
|
||||
}
|
||||
|
||||
// For API requests, does not redirect to a login page
|
||||
async authenticate (req, res, next) {
|
||||
|
||||
if (this._authenticate(req, res)) return next();
|
||||
if (await this._authenticate(req, res)) return next();
|
||||
|
||||
}
|
||||
|
||||
// Meant for non-api paths
|
||||
authenticateRedirect (req, res, next) {
|
||||
if (!req.isAuthenticated()) return res.redirect('/login');
|
||||
next();
|
||||
}
|
||||
|
||||
async _authenticate (req, res) {
|
||||
|
||||
if (req.isAuthenticated()) return true;
|
||||
@ -102,7 +110,7 @@ class Authenticator {
|
||||
* Authorisation implicitly checks for authentication
|
||||
*
|
||||
* @param {*} permission
|
||||
* @return {*}
|
||||
* @return {Function}
|
||||
* @memberof Authenticator
|
||||
*/
|
||||
createAuthoriser (permission) {
|
||||
|
Loading…
Reference in New Issue
Block a user