Merge branch 'develop' of github.com:thecodingmachine/workadventure into develop

This commit is contained in:
_Bastler
2022-04-25 14:50:09 +02:00
67 changed files with 1638 additions and 643 deletions
@@ -1,6 +1,6 @@
import { v4 } from "uuid";
import { BaseHttpController } from "./BaseHttpController";
import { adminApi } from "../Services/AdminApi";
import { adminApi, FetchMemberDataByUuidResponse } from "../Services/AdminApi";
import { AuthTokenData, jwtTokenManager } from "../Services/JWTTokenManager";
import { parse } from "query-string";
import { openIDClient } from "../Services/OpenIDClient";
@@ -19,6 +19,7 @@ export class AuthenticateController extends BaseHttpController {
this.register();
this.anonymLogin();
this.profileCallback();
this.me();
}
openIDLogin() {
@@ -180,7 +181,7 @@ export class AuthenticateController extends BaseHttpController {
if (!code && !nonce) {
return res.json({ ...resUserData, authToken: token });
}
console.error("Token cannot to be check on OpenId provider");
console.error("Token cannot be checked on OpenId provider");
res.status(500);
res.send("User cannot to be connected on openid provider");
return;
@@ -255,7 +256,7 @@ export class AuthenticateController extends BaseHttpController {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be logout on Hydra");
throw Error("Token cannot be logout on Hydra");
}
await openIDClient.logoutUser(authTokenData.accessToken);
} catch (error) {
@@ -412,7 +413,7 @@ export class AuthenticateController extends BaseHttpController {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be check on Hydra");
throw Error("Token cannot be checked on OpenID connect provider");
}
await openIDClient.checkTokenAuth(authTokenData.accessToken);
@@ -432,4 +433,80 @@ export class AuthenticateController extends BaseHttpController {
}
});
}
/**
* @openapi
* /me:
* get:
* description: ???
* parameters:
* - name: "token"
* in: "query"
* description: "A JWT authentication token ???"
* required: true
* type: "string"
* responses:
* 200:
* description: Data of user connected
*/
me() {
// @ts-ignore
this.app.get("/me", async (req, res): void => {
const { token } = parse(req.path_query);
try {
//verify connected by token
if (token != undefined) {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be checked on Hydra");
}
const me = await openIDClient.checkTokenAuth(authTokenData.accessToken);
//get login profile
res.status(200);
res.json({ ...me });
return;
} catch (error) {
this.castErrorToResponse(error, res);
return;
}
}
} catch (error) {
console.error("me => ERROR", error);
this.castErrorToResponse(error, res);
return;
}
});
}
/**
*
* @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;
}
}
@@ -8,7 +8,6 @@ import {
ItemEventMessage,
ViewportMessage,
ClientToServerMessage,
SilentMessage,
WebRtcSignalToServerMessage,
PlayGlobalMessage,
ReportPlayerMessage,
@@ -525,8 +524,6 @@ export class IoSocketController {
client,
message.getSetplayerdetailsmessage() as SetPlayerDetailsMessage
);
} else if (message.hasSilentmessage()) {
socketManager.handleSilentMessage(client, message.getSilentmessage() as SilentMessage);
} else if (message.hasItemeventmessage()) {
socketManager.handleItemEvent(client, message.getItemeventmessage() as ItemEventMessage);
} else if (message.hasVariablemessage()) {
+7 -6
View File
@@ -18,6 +18,7 @@ import {
ErrorMessage,
PlayerDetailsUpdatedMessage,
SetPlayerDetailsMessage,
AvailabilityStatus,
} from "../Messages/generated/messages_pb";
import { ClientReadableStream } from "grpc";
import { PositionDispatcher } from "../Model/PositionDispatcher";
@@ -49,7 +50,7 @@ export class UserDescriptor {
private name: string,
private characterLayers: CharacterLayerMessage[],
private position: PositionMessage,
private away: boolean,
private status: AvailabilityStatus,
private visitCardUrl: string | null,
private companion?: CompanionMessage,
private outlineColor?: number
@@ -70,7 +71,7 @@ export class UserDescriptor {
message.getName(),
message.getCharacterlayersList(),
position,
message.getAway(),
message.getStatus(),
message.getVisitcardurl(),
message.getCompanion(),
message.getHasoutline() ? message.getOutlinecolor() : undefined
@@ -91,9 +92,9 @@ export class UserDescriptor {
} else {
this.outlineColor = playerDetails.getOutlinecolor()?.getValue();
}
const away = playerDetails.getAway();
if (away) {
this.away = away.getValue();
const status = playerDetails.getStatus();
if (status !== undefined) {
this.status = status;
}
}
@@ -104,7 +105,7 @@ export class UserDescriptor {
userJoinedMessage.setName(this.name);
userJoinedMessage.setCharacterlayersList(this.characterLayers);
userJoinedMessage.setPosition(this.position);
userJoinedMessage.setAway(this.away);
userJoinedMessage.setStatus(this.status);
if (this.visitCardUrl) {
userJoinedMessage.setVisitcardurl(this.visitCardUrl);
}
-8
View File
@@ -24,7 +24,6 @@ import {
ServerToAdminClientMessage,
ServerToClientMessage,
SetPlayerDetailsMessage,
SilentMessage,
SubMessage,
UserJoinedRoomMessage,
UserLeftMessage,
@@ -367,13 +366,6 @@ export class SocketManager implements ZoneEventListener {
client.backConnection.write(pusherToBackMessage);
}
handleSilentMessage(client: ExSocketInterface, silentMessage: SilentMessage) {
const pusherToBackMessage = new PusherToBackMessage();
pusherToBackMessage.setSilentmessage(silentMessage);
client.backConnection.write(pusherToBackMessage);
}
handleItemEvent(client: ExSocketInterface, itemEventMessage: ItemEventMessage) {
const pusherToBackMessage = new PusherToBackMessage();
pusherToBackMessage.setItemeventmessage(itemEventMessage);