Get tags from the admin
And uses tag "admin" to choose whether to display the console or not
This commit is contained in:
parent
3710c3cb7d
commit
98bda49d7e
6 changed files with 33 additions and 11 deletions
|
@ -145,12 +145,14 @@ export class IoSocketController {
|
|||
const userUuid = await jwtTokenManager.getUserUuidFromToken(token);
|
||||
console.log('uuid', userUuid);
|
||||
|
||||
let memberTags: string[] = [];
|
||||
if (roomIdentifier.anonymous === false) {
|
||||
const isGranted = await adminApi.memberIsGrantedAccessToRoom(userUuid, roomIdentifier);
|
||||
if (!isGranted) {
|
||||
const grants = await adminApi.memberIsGrantedAccessToRoom(userUuid, roomIdentifier);
|
||||
if (!grants.granted) {
|
||||
console.log('access not granted for user '+userUuid+' and room '+roomId);
|
||||
throw new Error('Client cannot acces this ressource.')
|
||||
} else {
|
||||
memberTags = grants.memberTags;
|
||||
console.log('access granted for user '+userUuid+' and room '+roomId);
|
||||
}
|
||||
}
|
||||
|
@ -181,7 +183,8 @@ export class IoSocketController {
|
|||
right,
|
||||
bottom,
|
||||
left
|
||||
}
|
||||
},
|
||||
tags: memberTags
|
||||
},
|
||||
/* Spell these correctly */
|
||||
websocketKey,
|
||||
|
@ -218,6 +221,7 @@ export class IoSocketController {
|
|||
client.name = ws.name;
|
||||
client.characterLayers = ws.characterLayers;
|
||||
client.roomId = ws.roomId;
|
||||
client.tags = ws.tags;
|
||||
|
||||
this.sockets.set(client.userId, client);
|
||||
|
||||
|
@ -353,6 +357,7 @@ export class IoSocketController {
|
|||
}
|
||||
|
||||
roomJoinedMessage.setCurrentuserid(client.userId);
|
||||
roomJoinedMessage.setTagList(client.tags);
|
||||
|
||||
const serverToClientMessage = new ServerToClientMessage();
|
||||
serverToClientMessage.setRoomjoinedmessage(roomJoinedMessage);
|
||||
|
|
|
@ -7,7 +7,7 @@ import {WebSocket} from "uWebSockets.js"
|
|||
export interface ExSocketInterface extends WebSocket, Identificable {
|
||||
token: string;
|
||||
roomId: string;
|
||||
userId: number; // A temporary (autoincremented) identifier for this user
|
||||
//userId: number; // A temporary (autoincremented) identifier for this user
|
||||
userUuid: string; // A unique identifier for this user
|
||||
name: string;
|
||||
characterLayers: string[];
|
||||
|
@ -19,5 +19,6 @@ export interface ExSocketInterface extends WebSocket, Identificable {
|
|||
emitInBatch: (payload: SubMessage) => void;
|
||||
batchedMessages: BatchMessage;
|
||||
batchTimeout: NodeJS.Timeout|null;
|
||||
disconnecting: boolean
|
||||
disconnecting: boolean,
|
||||
tags: string[]
|
||||
}
|
||||
|
|
|
@ -10,6 +10,11 @@ export interface AdminApiData {
|
|||
userUuid: string
|
||||
}
|
||||
|
||||
export interface GrantedApiData {
|
||||
granted: boolean,
|
||||
memberTags: string[]
|
||||
}
|
||||
|
||||
class AdminApi {
|
||||
|
||||
async fetchMapDetails(organizationSlug: string, worldSlug: string, roomSlug: string|undefined): Promise<AdminApiData> {
|
||||
|
@ -46,7 +51,7 @@ class AdminApi {
|
|||
return res.data;
|
||||
}
|
||||
|
||||
async memberIsGrantedAccessToRoom(memberId: string, roomIdentifier: RoomIdentifier): Promise<boolean> {
|
||||
async memberIsGrantedAccessToRoom(memberId: string, roomIdentifier: RoomIdentifier): Promise<GrantedApiData> {
|
||||
if (!ADMIN_API_URL) {
|
||||
return Promise.reject('No admin backoffice set!');
|
||||
}
|
||||
|
@ -54,10 +59,13 @@ class AdminApi {
|
|||
const res = await Axios.get(ADMIN_API_URL+'/api/member/is-granted-access',
|
||||
{ headers: {"Authorization" : `${ADMIN_API_TOKEN}`}, params: {memberId, organizationSlug: roomIdentifier.organizationSlug, worldSlug: roomIdentifier.worldSlug, roomSlug: roomIdentifier.roomSlug} }
|
||||
)
|
||||
return !!res.data;
|
||||
return res.data;
|
||||
} catch (e) {
|
||||
console.log(e.message)
|
||||
return false;
|
||||
return {
|
||||
granted: false,
|
||||
memberTags: []
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue