added user status and prediction user
This commit is contained in:
@ -10,7 +10,7 @@ import globals from '../globals';
|
||||
|
||||
module.exports = async (req, res, next) => {
|
||||
let givenMethod = ''; // authorization method given by client, basic taken preferred
|
||||
let user = {name: '', level: '', id: '', location: ''}; // user object
|
||||
let user = {name: '', level: '', id: '', location: '', models: []}; // user object
|
||||
|
||||
// test authentications
|
||||
const userBasic = await basic(req, next);
|
||||
@ -48,7 +48,8 @@ module.exports = async (req, res, next) => {
|
||||
username: user.name,
|
||||
level: user.level,
|
||||
id: user.id,
|
||||
location: user.location
|
||||
location: user.location,
|
||||
models: user.models
|
||||
};
|
||||
|
||||
next();
|
||||
@ -59,7 +60,7 @@ function basic (req, next): any { // checks basic auth and returns changed user
|
||||
return new Promise(resolve => {
|
||||
const auth = basicAuth(req);
|
||||
if (auth !== undefined) { // basic auth available
|
||||
UserModel.find({name: auth.name}).lean().exec( (err, data: any) => { // find user
|
||||
UserModel.find({name: auth.name, status: globals.status.new}).lean().exec( (err, data: any) => { // find user
|
||||
if (err) return next(err);
|
||||
if (data.length === 1) { // one user found
|
||||
bcrypt.compare(auth.pass, data[0].pass, (err, res) => { // check password
|
||||
@ -69,7 +70,8 @@ function basic (req, next): any { // checks basic auth and returns changed user
|
||||
level: Object.entries(globals.levels).find(e => e[1] === data[0].level)[0],
|
||||
name: data[0].name,
|
||||
id: data[0]._id.toString(),
|
||||
location: data[0].location
|
||||
location: data[0].location,
|
||||
models: data[0].models
|
||||
});
|
||||
}
|
||||
else {
|
||||
@ -91,14 +93,15 @@ function basic (req, next): any { // checks basic auth and returns changed user
|
||||
function key (req, next): any { // checks API key and returns changed user object
|
||||
return new Promise(resolve => {
|
||||
if (req.query.key !== undefined) { // key available
|
||||
UserModel.find({key: req.query.key}).lean().exec( (err, data: any) => { // find user
|
||||
UserModel.find({key: req.query.key, status: globals.status.new}).lean().exec( (err, data: any) => { // find user
|
||||
if (err) return next(err);
|
||||
if (data.length === 1) { // one user found
|
||||
resolve({
|
||||
level: Object.entries(globals.levels).find(e => e[1] === data[0].level)[0],
|
||||
name: data[0].name,
|
||||
id: data[0]._id.toString(),
|
||||
location: data[0].location
|
||||
location: data[0].location,
|
||||
models: data[0].models
|
||||
});
|
||||
if (!/^\/api/m.test(req.url)){
|
||||
delete req.query.key; // delete query parameter to avoid interference with later validation
|
||||
|
Reference in New Issue
Block a user