Merge from develop

This commit is contained in:
CEC
2022-04-13 17:27:42 +02:00
14 changed files with 110 additions and 90 deletions
@@ -1,11 +1,12 @@
import { v4 } from "uuid";
import { BaseHttpController } from "./BaseHttpController";
import { adminApi, FetchMemberDataByUuidResponse } from "../Services/AdminApi";
import { adminApi } from "../Services/AdminApi";
import { AuthTokenData, jwtTokenManager } from "../Services/JWTTokenManager";
import { parse } from "query-string";
import { openIDClient } from "../Services/OpenIDClient";
import { DISABLE_ANONYMOUS } from "../Enum/EnvironmentVariable";
import { RegisterData } from "../Messages/JsonMessages/RegisterData";
import { adminService } from "../Services/AdminService";
export interface TokenInterface {
userUuid: string;
@@ -166,10 +167,11 @@ export class AuthenticateController extends BaseHttpController {
//Get user data from Admin Back Office
//This is very important to create User Local in LocalStorage in WorkAdventure
const resUserData = await this.getUserByUserIdentifier(
const resUserData = await adminService.fetchMemberDataByUuid(
authTokenData.identifier,
playUri as string,
IPAddress
IPAddress,
[]
);
if (authTokenData.accessToken == undefined) {
@@ -221,7 +223,7 @@ export class AuthenticateController extends BaseHttpController {
//Get user data from Admin Back Office
//This is very important to create User Local in LocalStorage in WorkAdventure
const data = await this.getUserByUserIdentifier(email, playUri as string, IPAddress);
const data = await adminService.fetchMemberDataByUuid(email, playUri as string, IPAddress, []);
return res.json({ ...data, authToken, username: userInfo?.username, locale: userInfo?.locale });
} catch (e) {
@@ -432,34 +434,4 @@ export class AuthenticateController extends BaseHttpController {
}
});
}
/**
*
* @param email
* @param playUri
* @param IPAddress
* @return FetchMemberDataByUuidResponse|object
* @private
*/
private async getUserByUserIdentifier(
email: string,
playUri: string,
IPAddress: string
): Promise<FetchMemberDataByUuidResponse | object> {
let data: FetchMemberDataByUuidResponse = {
email: email,
userUuid: email,
tags: [],
messages: [],
visitCardUrl: null,
textures: [],
userRoomToken: undefined,
};
try {
data = await adminApi.fetchMemberDataByUuid(email, playUri, IPAddress, []);
} catch (err) {
console.error("openIDCallback => fetchMemberDataByUuid", err);
}
return data;
}
}
@@ -236,8 +236,6 @@ export class IoSocketController {
const websocketExtensions = req.getHeader("sec-websocket-extensions");
const IPAddress = req.getHeader("x-forwarded-for");
adminApi.setLocale(req.getHeader("accept-language"));
const roomId = query.roomId;
try {
if (typeof roomId !== "string") {
+3 -2
View File
@@ -6,6 +6,7 @@ import { AdminApiData, isAdminApiData } from "../Messages/JsonMessages/AdminApiD
import { z } from "zod";
import { isWokaDetail } from "../Messages/JsonMessages/PlayerTextures";
import qs from "qs";
import { AdminInterface } from "./AdminInterface";
export interface AdminBannedData {
is_banned: boolean;
@@ -25,7 +26,7 @@ export const isFetchMemberDataByUuidResponse = z.object({
export type FetchMemberDataByUuidResponse = z.infer<typeof isFetchMemberDataByUuidResponse>;
class AdminApi {
class AdminApi implements AdminInterface {
private locale: string = "en";
setLocale(locale: string) {
//console.info('PUSHER LOCALE SET TO :', locale);
@@ -70,7 +71,7 @@ class AdminApi {
}
async fetchMemberDataByUuid(
userIdentifier: string | null,
userIdentifier: string,
playUri: string,
ipAddress: string,
characterLayers: string[]
+10
View File
@@ -0,0 +1,10 @@
import { FetchMemberDataByUuidResponse } from "./AdminApi";
export interface AdminInterface {
fetchMemberDataByUuid(
userIdentifier: string,
playUri: string,
ipAddress: string,
characterLayers: string[]
): Promise<FetchMemberDataByUuidResponse>;
}
+5
View File
@@ -0,0 +1,5 @@
import { ADMIN_API_URL } from "../Enum/EnvironmentVariable";
import { adminApi } from "./AdminApi";
import { localAdmin } from "./LocalAdmin";
export const adminService = ADMIN_API_URL ? adminApi : localAdmin;
+29
View File
@@ -0,0 +1,29 @@
import { FetchMemberDataByUuidResponse } from "./AdminApi";
import { AdminInterface } from "./AdminInterface";
/**
* A local class mocking a real admin if no admin is configured.
*/
class LocalAdmin implements AdminInterface {
fetchMemberDataByUuid(
userIdentifier: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
playUri: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
ipAddress: string,
// eslint-disable-next-line @typescript-eslint/no-unused-vars
characterLayers: string[]
): Promise<FetchMemberDataByUuidResponse> {
return Promise.resolve({
email: userIdentifier,
userUuid: userIdentifier,
tags: [],
messages: [],
visitCardUrl: null,
textures: [],
userRoomToken: undefined,
});
}
}
export const localAdmin = new LocalAdmin();