64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
module.exports = function (app, app_cfg, db, bcrypt, passport, LocalStrategy) {
|
|
|
|
var session = require('express-session');
|
|
var SQLiteStore = require('connect-sqlite3')(session);
|
|
var LocalStrategy = require('passport-local').Strategy;
|
|
|
|
app.use(session({
|
|
store: new SQLiteStore({
|
|
db: app_cfg.global.database,
|
|
concurrentDB: true
|
|
}),
|
|
secret: app_cfg.global.sessionsecret,
|
|
resave: false,
|
|
saveUninitialized: true,
|
|
cookie: {
|
|
maxAge: 60 * 60 * 1000
|
|
} // 1 Stunde
|
|
}));
|
|
|
|
app.use(passport.initialize());
|
|
app.use(passport.session());
|
|
|
|
// Benutzerauthentifizierung
|
|
passport.use(new LocalStrategy({
|
|
usernameField: 'user'
|
|
}, function (user, password, done) {
|
|
db.get('SELECT password FROM waip_users WHERE user = ?', user, function (err, row) {
|
|
if (!row) return done(null, false);
|
|
bcrypt.compare(password, row.password, function (err, res) {
|
|
if (!res) return done(null, false);
|
|
db.get('SELECT user, id FROM waip_users WHERE user = ?', user, function (err, row) {
|
|
return done(null, row);
|
|
});
|
|
});
|
|
});
|
|
}));
|
|
|
|
passport.serializeUser(function (user, done) {
|
|
return done(null, user.id);
|
|
});
|
|
|
|
passport.deserializeUser(function (id, done) {
|
|
db.get('SELECT id, user, permissions FROM waip_users WHERE id = ?', id, function (err, row) {
|
|
if (!row) {
|
|
return done(null, false);
|
|
}
|
|
return done(null, row);
|
|
});
|
|
});
|
|
|
|
// Funktion die prueft ob der Benutzer angemeldet ist
|
|
function ensureAuthenticated(req, res, next) {
|
|
if (req.isAuthenticated()) {
|
|
// req.user is available for use here
|
|
return next(); }
|
|
|
|
// denied. redirect to login
|
|
res.redirect('/login')
|
|
}
|
|
|
|
return{
|
|
ensureAuthenticated: ensureAuthenticated
|
|
};
|
|
}; |