Files
freeplanet_serverside/src/server/middleware/authenticate.js

82 lines
1.8 KiB
JavaScript
Raw Normal View History

const server_constants = require('../tools/server_constants');
2020-04-24 10:29:25 +02:00
var { User } = require('../models/user');
2018-12-24 20:31:02 +01:00
const tools = require('../tools/general');
2020-12-25 03:54:16 +01:00
const auth_default = (req, res, next) => {
if (req.body.keyappid === process.env.KEY_APP_ID)
next();
};
const authenticate = (req, res, next) => {
const token = req.header('x-auth');
2018-12-24 20:31:02 +01:00
// console.log('authenticate... ');
const access = 'auth';
2018-12-24 20:31:02 +01:00
User.findByToken(token, access).then((user) => {
2020-04-24 10:29:25 +02:00
2018-12-24 20:31:02 +01:00
if (!user) {
// tools.mylog("TOKEN " + token);
// tools.mylog(" NOT FOUND! (Maybe Connected to other Page) ACCESS: '" + access + "'");
return Promise.reject(server_constants.RIS_CODE_HTTP_INVALID_TOKEN);
// res.status().send();
2018-12-24 20:31:02 +01:00
}
2020-04-24 10:29:25 +02:00
if (!!user.deleted) {
if (user.deleted)
user = null;
}
2020-04-24 10:29:25 +02:00
if (!user) {
return Promise.reject(server_constants.RIS_CODE_HTTP_INVALID_TOKEN);
}
if (!!user) {
// Save last time online
user.lasttimeonline = new Date();
return user.save().then(() => {
req.user = user;
req.token = token;
req.access = access;
next();
});
}
// tools.mylog('userid', user._id);
2018-12-24 20:31:02 +01:00
}).catch((e) => {
tools.mylog("ERR =", e);
res.status(server_constants.RIS_CODE_HTTP_INVALID_TOKEN).send();
2018-12-24 20:31:02 +01:00
});
};
const authenticate_noerror = (req, res, next) => {
const token = req.header('x-auth');
const access = 'auth';
User.findByToken(token, access).then((user) => {
if (!user) {
req.user = null;
req.token = null;
req.access = null;
2020-04-24 10:29:25 +02:00
} else {
req.user = user;
req.token = token;
req.access = access;
}
next();
}).catch((e) => {
req.user = null;
req.token = null;
req.access = null;
});
};
2020-12-25 03:54:16 +01:00
module.exports = { authenticate, authenticate_noerror, auth_default };