2019-02-09 18:03:14 +01:00
|
|
|
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
|
|
|
|
2019-02-07 00:52:48 +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();
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
2019-10-15 20:40:31 +02:00
|
|
|
const authenticate = (req, res, next) => {
|
|
|
|
|
const token = req.header('x-auth');
|
2018-12-24 20:31:02 +01:00
|
|
|
|
2019-10-15 20:40:31 +02:00
|
|
|
// console.log('authenticate... ');
|
2019-10-12 23:34:32 +02:00
|
|
|
|
2023-01-04 02:09:42 +01:00
|
|
|
let noaut = false;
|
|
|
|
|
|
|
|
|
|
if (req.body.hasOwnProperty('noaut')) {
|
|
|
|
|
noaut = req.body.noaut;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noaut) {
|
|
|
|
|
next();
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2019-02-14 19:01:41 +01:00
|
|
|
const access = 'auth';
|
2018-12-24 20:31:02 +01:00
|
|
|
|
2019-02-12 12:06:25 +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) {
|
2020-01-13 23:52:51 +01:00
|
|
|
// tools.mylog("TOKEN " + token);
|
|
|
|
|
// tools.mylog(" NOT FOUND! (Maybe Connected to other Page) ACCESS: '" + access + "'");
|
2019-02-09 18:03:14 +01:00
|
|
|
return Promise.reject(server_constants.RIS_CODE_HTTP_INVALID_TOKEN);
|
|
|
|
|
// res.status().send();
|
2018-12-24 20:31:02 +01:00
|
|
|
}
|
2019-10-27 00:37:10 +02:00
|
|
|
|
2020-04-24 10:29:25 +02:00
|
|
|
if (!!user.deleted) {
|
|
|
|
|
if (user.deleted)
|
|
|
|
|
user = null;
|
|
|
|
|
}
|
2019-10-27 00:37:10 +02:00
|
|
|
|
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();
|
2022-02-22 18:10:31 +01:00
|
|
|
user.useragent = req.get('User-Agent');
|
2020-04-24 10:29:25 +02:00
|
|
|
|
|
|
|
|
return user.save().then(() => {
|
|
|
|
|
req.user = user;
|
|
|
|
|
req.token = token;
|
|
|
|
|
req.access = access;
|
|
|
|
|
next();
|
|
|
|
|
});
|
|
|
|
|
}
|
2019-02-11 02:59:05 +01:00
|
|
|
// tools.mylog('userid', user._id);
|
2018-12-24 20:31:02 +01:00
|
|
|
|
|
|
|
|
}).catch((e) => {
|
2022-02-22 15:24:32 +01:00
|
|
|
tools.mylog("ERR authenticate invalid Token =", e);
|
2019-02-09 18:03:14 +01:00
|
|
|
res.status(server_constants.RIS_CODE_HTTP_INVALID_TOKEN).send();
|
2018-12-24 20:31:02 +01:00
|
|
|
});
|
|
|
|
|
};
|
|
|
|
|
|
2019-10-23 23:47:21 +02: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 {
|
2019-10-23 23:47:21 +02:00
|
|
|
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 };
|