Compare commits

..

No commits in common. "08de9bcbc1e2e13f16886d4e4dc5ea6e30cfd9f6" and "12753d76a167bcbb78128270abf4ed57c054f66b" have entirely different histories.

6 changed files with 22 additions and 58 deletions

7
app.js
View File

@ -66,13 +66,12 @@ app.use(cors()); // Allow access from any origin
app.use(express.json()); //JSON Parsing for POST Requests app.use(express.json()); //JSON Parsing for POST Requests
app.use(compression()); // Compress API Data if supported by client app.use(compression()); // Compress API Data if supported by client
app.use(limiter); app.use(limiter);
app.use(authenticate);
// 2023 Rationalisation Routes (/api/v2, /misc) // 2023 Rationalisation Routes (/api/v2, /misc)
app.use('/api/v2/pis', pis2Rtr); // API Version 2 app.use('/api/v2/pis', authenticate, pis2Rtr); // API Version 2
app.use('/api/v2/live', live2Rtr); // API Version 2 app.use('/api/v2/live',authenticate, live2Rtr); // API Version 2
app.use('/api/v2/ref', ref2Rtr); // API Version 2 app.use('/api/v2/ref', ref2Rtr); // API Version 2
app.use('/api/v2/timetable', tt2Rtr); // API Version 2 app.use('/api/v2/timetable', authenticate, tt2Rtr); // API Version 2
app.use('/api/v2/user', user2Rtr); // API Version 2 app.use('/api/v2/user', user2Rtr); // API Version 2
app.use('/misc', miscRtr); // Non public-api endpoints (Stats, Issue, etc.) app.use('/misc', miscRtr); // Non public-api endpoints (Stats, Issue, etc.)

View File

@ -1,6 +1,6 @@
const version = { const version = {
api: ['/api/v1/','/api/v2'], api: ['/api/v1/','/api/v2'],
app: '2023.7.3' app: '2023.7.2'
}; };
module.exports = version; module.exports = version;

View File

@ -12,11 +12,6 @@ async function get(req, res, next){ // API v1 only
} }
async function getTrain(req, res, next) { // API v2 Only async function getTrain(req, res, next) { // API v2 Only
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
throw err;
}
let type = req.params.searchType; let type = req.params.searchType;
let id = req.params.id; let id = req.params.id;
try { try {
@ -30,11 +25,12 @@ async function getTrain(req, res, next) { // API v2 Only
res.json(await ldb.getServicesByOther(id)); res.json(await ldb.getServicesByOther(id));
break; break;
default: default:
res.status(400).json({status: 'error', message:'Invalid search type'}); res.status(404);
res.json({status: 'error', message:'Invalid search type'});
} }
} catch (err) { } catch (err) {
err.status = 500;
console.error('Unknown Error', err.message); console.error('Unknown Error', err.message);
err.status = 500;
next(err); next(err);
} }
} }
@ -44,14 +40,11 @@ async function getStation(req, res, next) { // API v2 Only
let id = req.params.id; let id = req.params.id;
try { try {
if (type == 'staff') { if (type == 'staff') {
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
throw err;
}
res.json(await ldb.get(id, true)); res.json(await ldb.get(id, true));
next();
} else { } else {
res.json(await ldb.get(id, false)); res.json(await ldb.get(id, false));
next();
} }
} catch (err) { } catch (err) {
console.error('Unknown Error', err.message); console.error('Unknown Error', err.message);

View File

@ -1,11 +1,6 @@
const pis = require('../services/pis.services'); const pis = require('../services/pis.services');
async function byOrigDest(req, res, next){ async function byOrigDest(req, res, next){
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
throw err;
}
try { try {
let start = req.params.start; let start = req.params.start;
let end = req.params.end; let end = req.params.end;
@ -18,48 +13,33 @@ async function byOrigDest(req, res, next){
/* Used in /api/v2 */ /* Used in /api/v2 */
async function byStartEndCRS(req, res, next){ async function byStartEndCRS(req, res, next){
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
return next(err);
}
try { try {
let startCrs = req.params.startCrs; let startCrs = req.params.startCrs;
let endCrs = req.params.endCrs; let endCrs = req.params.endCrs;
res.json(await pis.findPisByOrigDest(startCrs,endCrs)); res.json(await pis.findPisByOrigDest(startCrs,endCrs));
} catch (err) { } catch (err) {
console.error('Unknown Error', err.message); console.error('Unknown Error', err.message);
return next(err); next(err);
} }
} }
/* Used in /api/v2 */ /* Used in /api/v2 */
async function byCode(req, res, next){ async function byCode(req, res, next){
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
return next(err);
}
try { try {
let code = req.params.code; let code = req.params.code;
res.json(await pis.findPisByCode(code)); res.json(await pis.findPisByCode(code));
} catch (err) { } catch (err) {
console.error('Unknown Error', err.message); console.error('Unknown Error', err.message);
return next(err); next(err);
} }
} }
async function random(req, res, next){ async function random(req, res, next){
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
return next(err);
}
try { try {
res.json(await pis.findRandom()); res.json(await pis.findRandom());
} catch (err) { } catch (err) {
console.error('Unknown Error', err.message); console.error('Unknown Error', err.message);
return next(err); next(err);
} }
} }

View File

@ -1,11 +1,6 @@
const train = require('../services/trainService.services'); const train = require('../services/trainService.services');
async function getByHeadcodeToday(req, res, next){ async function getByHeadcodeToday(req, res, next){
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
throw err;
}
try { try {
var searchHeadcode = req.params.id; var searchHeadcode = req.params.id;
res.json(await train.findByHeadcodeToday(searchHeadcode)); res.json(await train.findByHeadcodeToday(searchHeadcode));
@ -17,11 +12,6 @@ async function getByHeadcodeToday(req, res, next){
} }
async function get(req, res, next) { async function get(req, res, next) {
if (!req.isAuthed) {
const err = new Error('Unauthorized');
err.status = 401;
throw err;
}
let date = req.params.date; let date = req.params.date;
let searchType = req.params.searchType; let searchType = req.params.searchType;
let id = req.params.id; let id = req.params.id;

View File

@ -6,23 +6,25 @@ module.exports = async function authCheck(req, res, next) {
try { try {
var uuid = req.headers.uuid; var uuid = req.headers.uuid;
} catch(err) { } catch(err) {
log.out('authMiddlewares: User !isAuthed', 'dbug'); log.out('authMiddlewares: No authentication attempted', 'dbug');
req.isAuthed = false; err.status = 401;
return next(); return next(err);
} }
try { try {
var result = await utils.isAuthed(uuid) || false; var result = await utils.isAuthed(uuid) || false;
if (!result) { if (!result) {
req.isAuthed = false; req.isAuthed = false;
log.out('authMiddlewares: User !isAuthed', const err = new Error('Unauthorised');
err.status = 401;
log.out('authMiddlewares: Authentication attempted with incorrect key',
'warn'); 'warn');
return next(err);
} else { } else {
req.isAuthed = true; req.isAuthed = true;
log.out('authMiddlewares: User isAuthed', 'dbug'); log.out('authMiddlewares: User authenticated', 'dbug');
return next();
} }
return next();
} catch(err) { } catch(err) {
req.isAuthed = false; return next(err);
return next();
} }
}; };