Compare commits
2 Commits
88cf7d3d15
...
a1fdf22805
Author | SHA1 | Date |
---|---|---|
Fred Boniface | a1fdf22805 | |
Fred Boniface | 7657085bc3 |
|
@ -3,7 +3,11 @@ import { NextFunction, Request, Response } from "express";
|
||||||
const utils = require("../utils/auth.utils");
|
const utils = require("../utils/auth.utils");
|
||||||
const logger = require("../utils/logger.utils");
|
const logger = require("../utils/logger.utils");
|
||||||
|
|
||||||
module.exports = async function authCheck(req: Request, res: Response, next: NextFunction) {
|
module.exports = async function authCheck(
|
||||||
|
req: Request,
|
||||||
|
res: Response,
|
||||||
|
next: NextFunction
|
||||||
|
) {
|
||||||
logger.logger.debug("auth.middleware: Auth check begun");
|
logger.logger.debug("auth.middleware: Auth check begun");
|
||||||
if (process.env.NODE_ENV === "development") {
|
if (process.env.NODE_ENV === "development") {
|
||||||
req.isAuthed = true;
|
req.isAuthed = true;
|
||||||
|
@ -11,12 +15,12 @@ module.exports = async function authCheck(req: Request, res: Response, next: Nex
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
const id: string | string[] | undefined = req.headers.uuid;
|
const id: string | string[] | undefined = req.headers.uuid;
|
||||||
if (typeof id === 'undefined') {
|
if (typeof id === "undefined") {
|
||||||
req.isAuthed = false;
|
req.isAuthed = false;
|
||||||
logger.logger.info("auth.middleware: Authentication failed");
|
logger.logger.info("auth.middleware: Authentication failed");
|
||||||
next();
|
next();
|
||||||
} else if (typeof id === 'string') {
|
} else if (typeof id === "string") {
|
||||||
const authCheck = await utils.isAuthed(id) || false;
|
const authCheck = (await utils.isAuthed(id)) || false;
|
||||||
if (authCheck) {
|
if (authCheck) {
|
||||||
req.isAuthed = true;
|
req.isAuthed = true;
|
||||||
logger.logger.info("auth.middleware: Authentication Successful");
|
logger.logger.info("auth.middleware: Authentication Successful");
|
||||||
|
@ -27,14 +31,18 @@ module.exports = async function authCheck(req: Request, res: Response, next: Nex
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
} else if (Array.isArray(id)) {
|
} else if (Array.isArray(id)) {
|
||||||
const authCheck = await utils.isAuthed(id[0]) || false;
|
const authCheck = (await utils.isAuthed(id[0])) || false;
|
||||||
if (authCheck) {
|
if (authCheck) {
|
||||||
req.isAuthed = true;
|
req.isAuthed = true;
|
||||||
logger.logger.warn("auth.middleware: UUID Passed as Array - Authentication Successful");
|
logger.logger.warn(
|
||||||
|
"auth.middleware: UUID Passed as Array - Authentication Successful"
|
||||||
|
);
|
||||||
next();
|
next();
|
||||||
} else {
|
} else {
|
||||||
req.isAuthed = false;
|
req.isAuthed = false;
|
||||||
logger.logger.warn("auth.middleware: UUID Passed as Array - Authentication Failed");
|
logger.logger.warn(
|
||||||
|
"auth.middleware: UUID Passed as Array - Authentication Failed"
|
||||||
|
);
|
||||||
next();
|
next();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,10 +80,10 @@ export async function findByTrainUid(
|
||||||
if (supported.includes(services[0]?.operator)) {
|
if (supported.includes(services[0]?.operator)) {
|
||||||
pis = await fetchPisCode(services[0]?.stops);
|
pis = await fetchPisCode(services[0]?.stops);
|
||||||
} else {
|
} else {
|
||||||
pis = null
|
pis = null;
|
||||||
}
|
}
|
||||||
// TODO: Format and return data, the function called is not yet complete
|
// TODO: Format and return data, the function called is not yet complete
|
||||||
return formatTimetableDetail(services[0], pis)
|
return formatTimetableDetail(services[0], pis);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Internal Functions:
|
// Internal Functions:
|
||||||
|
@ -97,25 +97,25 @@ async function fetchPisCode(
|
||||||
if (stops[stop]["isPublic"]) tiplocList.push(stops[stop]["tiploc"]);
|
if (stops[stop]["isPublic"]) tiplocList.push(stops[stop]["tiploc"]);
|
||||||
}
|
}
|
||||||
// Check if no public stops - then it should use an ECS headcode
|
// Check if no public stops - then it should use an ECS headcode
|
||||||
let pisData: OB_Pis_SimpleObject | null
|
let pisData: OB_Pis_SimpleObject | null;
|
||||||
if (tiplocList.length) {
|
if (tiplocList.length) {
|
||||||
pisData = await findByTiplocArray(tiplocList);
|
pisData = await findByTiplocArray(tiplocList);
|
||||||
} else {
|
} else {
|
||||||
pisData = {
|
pisData = {
|
||||||
toc: "GW",
|
toc: "GW",
|
||||||
skipCount: 0,
|
skipCount: 0,
|
||||||
code: randomEcsPis()
|
code: randomEcsPis(),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
return pisData;
|
return pisData;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Picks a random choice of the ECS PIS Codes
|
// Picks a random choice of the ECS PIS Codes
|
||||||
function randomEcsPis(): string {
|
function randomEcsPis(): string {
|
||||||
const options = ["0015", "9997"]
|
const options = ["0015", "9997"];
|
||||||
const randomValue = Math.floor(Math.random() * 2 )
|
const randomValue = Math.floor(Math.random() * 2);
|
||||||
return options[randomValue]
|
return options[randomValue];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Outputs the standard 'shortday' string from a Date.
|
// Outputs the standard 'shortday' string from a Date.
|
||||||
|
@ -169,9 +169,8 @@ function filterServices(services: SimpleService[]): SimpleService[] {
|
||||||
const stpIndicator = service["stpIndicator"];
|
const stpIndicator = service["stpIndicator"];
|
||||||
|
|
||||||
if (stpIndicator === "C") {
|
if (stpIndicator === "C") {
|
||||||
continue;
|
filteredServices.push(service);
|
||||||
}
|
} else if (stpIndicator === "N" && !thisStpIndicators.hasC) {
|
||||||
if (stpIndicator === "N" && !thisStpIndicators.hasC) {
|
|
||||||
filteredServices.push(service);
|
filteredServices.push(service);
|
||||||
} else if (
|
} else if (
|
||||||
stpIndicator === "O" &&
|
stpIndicator === "O" &&
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
// src/types/express/index.d.ts
|
// src/types/express/index.d.ts
|
||||||
|
|
||||||
// to make the file a module and avoid the TypeScript error
|
// to make the file a module and avoid the TypeScript error
|
||||||
export {}
|
export {};
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace Express {
|
namespace Express {
|
||||||
|
@ -9,4 +9,4 @@ declare global {
|
||||||
isAuthed: boolean;
|
isAuthed: boolean;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,36 +1,46 @@
|
||||||
import type {Service, OB_TrainTT_service, OB_Pis_SimpleObject, OB_TrainTT_stopDetail, Stop} from "@owlboard/ts-types"
|
import type {
|
||||||
|
Service,
|
||||||
|
OB_TrainTT_service,
|
||||||
|
OB_Pis_SimpleObject,
|
||||||
|
OB_TrainTT_stopDetail,
|
||||||
|
Stop,
|
||||||
|
} from "@owlboard/ts-types";
|
||||||
|
import { logger } from "../../logger.utils";
|
||||||
|
|
||||||
export function formatTimetableDetail(service: Service, pis: OB_Pis_SimpleObject | null): OB_TrainTT_service {
|
export function formatTimetableDetail(
|
||||||
const formattedService: OB_TrainTT_service = {
|
service: Service,
|
||||||
stpIndicator: service.stpIndicator,
|
pis: OB_Pis_SimpleObject | null
|
||||||
operator: service.operator,
|
): OB_TrainTT_service {
|
||||||
trainUid: service.trainUid,
|
const formattedService: OB_TrainTT_service = {
|
||||||
headcode: service.headcode,
|
stpIndicator: service.stpIndicator,
|
||||||
powerType: service.powerType,
|
operator: service.operator,
|
||||||
planSpeed: convertStringToNumber(service.planSpeed),
|
trainUid: service.trainUid,
|
||||||
scheduleStart: service.scheduleStartDate,
|
headcode: service.headcode,
|
||||||
scheduleEnd: service.scheduleEndDate,
|
powerType: service.powerType,
|
||||||
daysRun: service.daysRun,
|
planSpeed: convertStringToNumber(service.planSpeed),
|
||||||
stops: formatStops(service.stops),
|
scheduleStart: service.scheduleStartDate,
|
||||||
vstp: service.vstp,
|
scheduleEnd: service.scheduleEndDate,
|
||||||
}
|
daysRun: service.daysRun,
|
||||||
|
stops: formatStops(service.stops),
|
||||||
|
vstp: service.vstp,
|
||||||
|
};
|
||||||
|
|
||||||
if (pis) {
|
if (pis) {
|
||||||
formattedService.pis = pis;
|
formattedService.pis = pis;
|
||||||
}
|
}
|
||||||
|
|
||||||
return formattedService
|
return formattedService;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatStops(stops: Stop[]): OB_TrainTT_stopDetail[] {
|
function formatStops(stops: Stop[]): OB_TrainTT_stopDetail[] {
|
||||||
// Cleanly coerce Stop[] to OB_TrainTT_stopDetail[]
|
// Cleanly coerce Stop[] to OB_TrainTT_stopDetail[]
|
||||||
const formattedStops: OB_TrainTT_stopDetail[] = []
|
const formattedStops: OB_TrainTT_stopDetail[] = [];
|
||||||
|
|
||||||
for (const stop of stops) {
|
for (const stop of stops) {
|
||||||
formattedStops.push(formatStopTimes(stop))
|
formattedStops.push(formatStopTimes(stop));
|
||||||
}
|
}
|
||||||
|
|
||||||
return formattedStops
|
return formattedStops;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formatStopTimes(stop: Stop): OB_TrainTT_stopDetail {
|
function formatStopTimes(stop: Stop): OB_TrainTT_stopDetail {
|
||||||
|
@ -38,7 +48,7 @@ function formatStopTimes(stop: Stop): OB_TrainTT_stopDetail {
|
||||||
let formattedStop: OB_TrainTT_stopDetail = {
|
let formattedStop: OB_TrainTT_stopDetail = {
|
||||||
tiploc: stop.tiploc,
|
tiploc: stop.tiploc,
|
||||||
isPublic: false,
|
isPublic: false,
|
||||||
}
|
};
|
||||||
if (stop.publicArrival) {
|
if (stop.publicArrival) {
|
||||||
formattedStop.publicArrival = stop.publicArrival;
|
formattedStop.publicArrival = stop.publicArrival;
|
||||||
formattedStop.isPublic = true;
|
formattedStop.isPublic = true;
|
||||||
|
@ -53,14 +63,14 @@ function formatStopTimes(stop: Stop): OB_TrainTT_stopDetail {
|
||||||
if (stop.wttDeparture) {
|
if (stop.wttDeparture) {
|
||||||
formattedStop.wttDeparture = stop.wttDeparture;
|
formattedStop.wttDeparture = stop.wttDeparture;
|
||||||
}
|
}
|
||||||
return formattedStop
|
return formattedStop;
|
||||||
}
|
}
|
||||||
|
|
||||||
function convertStringToNumber(str: string): number {
|
function convertStringToNumber(str: string): number {
|
||||||
const number = parseFloat(str)
|
const number = parseFloat(str);
|
||||||
if (isNaN(number)) {
|
if (isNaN(number)) {
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
return number
|
return number;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue