Remove middleware to secure access API.

This commit is contained in:
gparant 2020-05-10 17:31:27 +02:00
parent 029a7a9a64
commit 69777ad1cb
5 changed files with 38 additions and 60 deletions

View File

@ -6,27 +6,28 @@ import {Application, Request, Response} from 'express';
import bodyParser = require('body-parser'); import bodyParser = require('body-parser');
import * as http from "http"; import * as http from "http";
import {MapController} from "./Controller/MapController"; import {MapController} from "./Controller/MapController";
import {AuthenticateMiddleware} from "./Middleware/AuthenticateMiddleware";
class App { class App {
public app: Application; public app: Application;
public server: http.Server; public server: http.Server;
public ioSocketController: IoSocketController; public ioSocketController: IoSocketController;
public authenticateController: AuthenticateController; public authenticateController: AuthenticateController;
//public AuthenticateMiddleware: AuthenticateMiddleware;
public mapController: MapController; public mapController: MapController;
constructor() { constructor() {
this.app = express(); this.app = express();
//config server http //config server http
this.config();
this.server = http.createServer(this.app); this.server = http.createServer(this.app);
this.config();
this.crossOrigin();
//TODO add middleware with access token to secure api
//create socket controllers //create socket controllers
this.ioSocketController = new IoSocketController(this.server); this.ioSocketController = new IoSocketController(this.server);
this.authenticateController = new AuthenticateController(this.app); this.authenticateController = new AuthenticateController(this.app);
//this.AuthenticateMiddleware = new AuthenticateMiddleware(this.app);
this.mapController = new MapController(this.app); this.mapController = new MapController(this.app);
} }
@ -34,9 +35,15 @@ class App {
private config(): void { private config(): void {
this.app.use(bodyParser.json()); this.app.use(bodyParser.json());
this.app.use(bodyParser.urlencoded({extended: false})); this.app.use(bodyParser.urlencoded({extended: false}));
}
private crossOrigin(){
this.app.use((req: Request, res: Response, next) => { this.app.use((req: Request, res: Response, next) => {
res.header("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from res.setHeader("Access-Control-Allow-Origin", "*"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); // Request methods you wish to allow
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
// Request headers you wish to allow
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next(); next();
}); });
} }

View File

@ -1,5 +1,4 @@
import express from "express"; import express from "express";
import path from "path";
import {Application, Request, Response} from "express"; import {Application, Request, Response} from "express";
import {OK} from "http-status-codes"; import {OK} from "http-status-codes";
import {ROOM_STARTED, ROOMS, URL_ROOM_STARTED} from "../Enum/EnvironmentVariable"; import {ROOM_STARTED, ROOMS, URL_ROOM_STARTED} from "../Enum/EnvironmentVariable";
@ -9,7 +8,7 @@ export class MapController {
constructor(App: Application) { constructor(App: Application) {
this.App = App; this.App = App;
this.getMpas(); this.getMaps();
this.assetMaps(); this.assetMaps();
} }

View File

@ -1,32 +0,0 @@
import {Application, Request, Response} from "express";
import {BAD_REQUEST} from "http-status-codes";
import Jwt, {JsonWebTokenError} from "jsonwebtoken";
import {SECRET_KEY} from "../Enum/EnvironmentVariable";
export class AuthenticateMiddleware{
App: Application;
constructor(App: Application) {
this.App = App;
this.tokenVerification();
}
tokenVerification() {
this.App.use((req: Request, res: Response, next: any) => {
let token = req.header("Access-Token");
if (!token) {
return res.status(BAD_REQUEST).send({
message: "you must to be connected to get the map"
});
}
return Jwt.verify(token, SECRET_KEY, (err: JsonWebTokenError, tokenDecoded: object) => {
if (err) {
return res.status(BAD_REQUEST).send({
message: "you must to be connected to get the map"
});
}
return next();
});
})
}
}

View File

@ -2,7 +2,7 @@ import {GameManager} from "./Phaser/Game/GameManager";
const SocketIo = require('socket.io-client'); const SocketIo = require('socket.io-client');
import Axios from "axios"; import Axios from "axios";
import {API_URL, ROOM} from "./Enum/EnvironmentVariable"; import {API_URL} from "./Enum/EnvironmentVariable";
enum EventMessage{ enum EventMessage{
WEBRTC_SIGNAL = "webrtc-signal", WEBRTC_SIGNAL = "webrtc-signal",
@ -212,8 +212,10 @@ export class Connexion implements ConnexionInterface {
}); });
} }
//TODO add middleware with access token to secure api
loadMaps() : Promise<any> { loadMaps() : Promise<any> {
return Axios.get(`${API_URL}/maps`).then((res) => { return Axios.get(`${API_URL}/maps`)
.then((res) => {
return res.data; return res.data;
}).catch((err) => { }).catch((err) => {
console.error(err); console.error(err);

View File

@ -93,17 +93,19 @@ export class LogincScene extends Phaser.Scene implements GameSceneInterface {
} }
private async login(name: string) { private async login(name: string) {
Promise.all([ return gameManager.connect(name, this.selectedPlayer.texture.key).then(() => {
gameManager.connect(name, this.selectedPlayer.texture.key), return gameManager.loadMaps().then((scene : any) => {
gameManager.loadMaps() if (!scene) {
]).then((data) => {
if (!data) {
return; return;
} }
let scene: any = data[1];
let game = new GameScene(scene.mapStart.key, `${API_URL}${scene.mapStart.url}`); let game = new GameScene(scene.mapStart.key, `${API_URL}${scene.mapStart.url}`);
this.scene.add(scene.mapStart.key, game, false); this.scene.add(scene.mapStart.key, game, false);
this.scene.start(scene.mapStart.key); this.scene.start(scene.mapStart.key);
return scene;
}).catch((err) => {
console.error(err);
throw err;
});
}).catch((err) => { }).catch((err) => {
console.error(err); console.error(err);
throw err; throw err;