Refactor access by token
Signed-off-by: Gregoire Parant <g.parant@thecodingmachine.com>
This commit is contained in:
@@ -2,7 +2,7 @@ import Axios from "axios";
|
|||||||
import { PUSHER_URL } from "../Enum/EnvironmentVariable";
|
import { PUSHER_URL } from "../Enum/EnvironmentVariable";
|
||||||
import { RoomConnection } from "./RoomConnection";
|
import { RoomConnection } from "./RoomConnection";
|
||||||
import type { OnConnectInterface, PositionInterface, ViewportInterface } from "./ConnexionModels";
|
import type { OnConnectInterface, PositionInterface, ViewportInterface } from "./ConnexionModels";
|
||||||
import { GameConnexionTypes, queryPrivateAccessToken, urlManager } from "../Url/UrlManager";
|
import { GameConnexionTypes, urlManager } from "../Url/UrlManager";
|
||||||
import { localUserStore } from "./LocalUserStore";
|
import { localUserStore } from "./LocalUserStore";
|
||||||
import { CharacterTexture, LocalUser } from "./LocalUser";
|
import { CharacterTexture, LocalUser } from "./LocalUser";
|
||||||
import { Room } from "./Room";
|
import { Room } from "./Room";
|
||||||
@@ -128,42 +128,6 @@ class ConnectionManager {
|
|||||||
return Promise.reject(new Error("You will be redirect on login page"));
|
return Promise.reject(new Error("You will be redirect on login page"));
|
||||||
}
|
}
|
||||||
urlManager.pushRoomIdToUrl(this._currentRoom);
|
urlManager.pushRoomIdToUrl(this._currentRoom);
|
||||||
} else if (connexionType === GameConnexionTypes.privateAccessToken) {
|
|
||||||
const organizationMemberToken = urlManager.privateAccessToken;
|
|
||||||
|
|
||||||
//clear queryPrivateAccessToken query in window location
|
|
||||||
urlParams.delete(queryPrivateAccessToken);
|
|
||||||
|
|
||||||
//create play uri parameter
|
|
||||||
const playUri = window.location.protocol + "//" + window.location.host + window.location.pathname;
|
|
||||||
const data = await Axios.post(`${PUSHER_URL}/register`, {
|
|
||||||
organizationMemberToken,
|
|
||||||
playUri,
|
|
||||||
}).then((res) => res.data);
|
|
||||||
if (!isRegisterData(data)) {
|
|
||||||
console.error("Invalid data received from /register route. Data: ", data);
|
|
||||||
throw new Error("Invalid data received from /register route.");
|
|
||||||
}
|
|
||||||
this.localUser = new LocalUser(data.userUuid, data.email);
|
|
||||||
this.authToken = data.authToken;
|
|
||||||
localUserStore.saveUser(this.localUser);
|
|
||||||
localUserStore.setAuthToken(this.authToken);
|
|
||||||
analyticsClient.loggedWithToken();
|
|
||||||
|
|
||||||
const roomUrl = data.roomUrl;
|
|
||||||
|
|
||||||
const query = urlParams.toString();
|
|
||||||
this._currentRoom = await Room.createRoom(
|
|
||||||
new URL(
|
|
||||||
window.location.protocol +
|
|
||||||
"//" +
|
|
||||||
window.location.host +
|
|
||||||
roomUrl +
|
|
||||||
(query ? "?" + query : "") + //use urlParams because the token param must be deleted
|
|
||||||
window.location.hash
|
|
||||||
)
|
|
||||||
);
|
|
||||||
urlManager.pushRoomIdToUrl(this._currentRoom);
|
|
||||||
}
|
}
|
||||||
//@deprecated
|
//@deprecated
|
||||||
else if (connexionType === GameConnexionTypes.register) {
|
else if (connexionType === GameConnexionTypes.register) {
|
||||||
|
|||||||
@@ -6,28 +6,24 @@ export enum GameConnexionTypes {
|
|||||||
register /*@deprecated*/,
|
register /*@deprecated*/,
|
||||||
empty,
|
empty,
|
||||||
unknown,
|
unknown,
|
||||||
jwt,
|
jwt /*@deprecated*/,
|
||||||
login,
|
login,
|
||||||
privateAccessToken,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const queryPrivateAccessToken = "privateAccessToken";
|
|
||||||
|
|
||||||
//this class is responsible with analysing and editing the game's url
|
//this class is responsible with analysing and editing the game's url
|
||||||
class UrlManager {
|
class UrlManager {
|
||||||
public getGameConnexionType(): GameConnexionTypes {
|
public getGameConnexionType(): GameConnexionTypes {
|
||||||
const url = window.location.pathname.toString();
|
const url = window.location.pathname.toString();
|
||||||
if (url === "/login") {
|
if (url === "/login") {
|
||||||
return GameConnexionTypes.login;
|
return GameConnexionTypes.login;
|
||||||
} else if (url === "/jwt") {
|
}
|
||||||
|
//@deprecated jwt url will be replace by "?token=<private access token>"
|
||||||
|
else if (url === "/jwt") {
|
||||||
return GameConnexionTypes.jwt;
|
return GameConnexionTypes.jwt;
|
||||||
} else if (url.includes("_/") || url.includes("*/") || url.includes("@/")) {
|
} else if (url.includes("_/") || url.includes("*/") || url.includes("@/")) {
|
||||||
if (window.location.search.includes(queryPrivateAccessToken)) {
|
|
||||||
return GameConnexionTypes.privateAccessToken;
|
|
||||||
}
|
|
||||||
return GameConnexionTypes.room;
|
return GameConnexionTypes.room;
|
||||||
}
|
}
|
||||||
//@deprecated register url will be replace by "?privateAccessToken=<private access token>"
|
//@deprecated register url will be replace by "?token=<private access token>"
|
||||||
else if (url.includes("register/")) {
|
else if (url.includes("register/")) {
|
||||||
return GameConnexionTypes.register;
|
return GameConnexionTypes.register;
|
||||||
} else if (url === "/") {
|
} else if (url === "/") {
|
||||||
@@ -37,14 +33,6 @@ class UrlManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
get privateAccessToken(): string | null {
|
|
||||||
const urlParams = new URLSearchParams(window.location.search.toString());
|
|
||||||
return urlParams.get(queryPrivateAccessToken);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated
|
* @deprecated
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user