dgdgproto/app/Authenticator.js
2020-03-26 00:06:24 +01:00

44 lines
1 KiB
JavaScript

const bcrypt = require('bcryptjs');
class Authenticator {
constructor(database) {
this.database = database;
};
getAuthenticatedUser(req, callback) {
if (req.session.userId) {
let collection = this.database.collection('users');
collection.findOne({ id: req.session.userId }, {}, function (dbErr, dbRes) {
if (dbErr === null) {
if (dbRes === null) {
callback(null);
} else {
callback(dbRes);
}
} else {
callback(null);
}
});
} else {
callback(null);
}
};
withUser(req, res, callback) {
this.getAuthenticatedUser(req, (user) => {
if (user) callback(user);
else res.status(401).send({ code: 'auth error', message: 'user not logged in.' });
});
};
withAdmin(req, res, callback) {
this.withUser(req, res, (user) => {
if (user.role === 'Admin') callback(user)
else res.status(403).send({ code: 'auth error', message: 'user is not Admin.' });
});
};
};
module.exports = Authenticator;