Fix feedback @moufmou
This commit is contained in:
parent
a7398fa851
commit
74d0594246
2 changed files with 20 additions and 12 deletions
|
@ -177,9 +177,8 @@ export class IoSocketController {
|
||||||
characterLayers = [ characterLayers ];
|
characterLayers = [ characterLayers ];
|
||||||
}
|
}
|
||||||
|
|
||||||
const userUuid = await jwtTokenManager.getUserUuidFromToken(token);
|
const userUuid = await jwtTokenManager.getUserUuidFromToken(token, IPAddress, roomId);
|
||||||
//TODO send ban message
|
|
||||||
await jwtTokenManager.verifyBanUser(userUuid, IPAddress, roomId);
|
|
||||||
let memberTags: string[] = [];
|
let memberTags: string[] = [];
|
||||||
let memberTextures: CharacterTexture[] = [];
|
let memberTextures: CharacterTexture[] = [];
|
||||||
const room = await socketManager.getOrCreateRoom(roomId);
|
const room = await socketManager.getOrCreateRoom(roomId);
|
||||||
|
|
|
@ -10,7 +10,7 @@ class JWTTokenManager {
|
||||||
return Jwt.sign({userUuid: userUuid}, SECRET_KEY, {expiresIn: '200d'}); //todo: add a mechanic to refresh or recreate token
|
return Jwt.sign({userUuid: userUuid}, SECRET_KEY, {expiresIn: '200d'}); //todo: add a mechanic to refresh or recreate token
|
||||||
}
|
}
|
||||||
|
|
||||||
public async getUserUuidFromToken(token: unknown): Promise<string> {
|
public async getUserUuidFromToken(token: unknown, ipAddress?: string, room?: string): Promise<string> {
|
||||||
|
|
||||||
if (!token) {
|
if (!token) {
|
||||||
throw new Error('An authentication error happened, a user tried to connect without a token.');
|
throw new Error('An authentication error happened, a user tried to connect without a token.');
|
||||||
|
@ -50,14 +50,22 @@ class JWTTokenManager {
|
||||||
|
|
||||||
if (ADMIN_API_URL) {
|
if (ADMIN_API_URL) {
|
||||||
//verify user in admin
|
//verify user in admin
|
||||||
adminApi.fetchCheckUserByToken(tokenInterface.userUuid).then(() => {
|
let promise = new Promise((resolve) => resolve());
|
||||||
resolve(tokenInterface.userUuid);
|
if(ipAddress && room) {
|
||||||
}).catch((err) => {
|
promise = this.verifyBanUser(tokenInterface.userUuid, ipAddress, room);
|
||||||
//anonymous user
|
}
|
||||||
if (err.response && err.response.status && err.response.status === 404) {
|
promise.then(() => {
|
||||||
|
adminApi.fetchCheckUserByToken(tokenInterface.userUuid).then(() => {
|
||||||
resolve(tokenInterface.userUuid);
|
resolve(tokenInterface.userUuid);
|
||||||
return;
|
}).catch((err) => {
|
||||||
}
|
//anonymous user
|
||||||
|
if (err.response && err.response.status && err.response.status === 404) {
|
||||||
|
resolve(tokenInterface.userUuid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
reject(err);
|
||||||
|
});
|
||||||
|
}).catch((err) => {
|
||||||
reject(err);
|
reject(err);
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -67,12 +75,13 @@ class JWTTokenManager {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public async verifyBanUser(userUuid: string, ipAddress: string, room: string): Promise<unknown> {
|
private verifyBanUser(userUuid: string, ipAddress: string, room: string): Promise<AdminBannedData> {
|
||||||
room = room.split('/').join('_');
|
room = room.split('/').join('_');
|
||||||
return adminApi.verifyBanUser(userUuid, ipAddress, room).then((data: AdminBannedData) => {
|
return adminApi.verifyBanUser(userUuid, ipAddress, room).then((data: AdminBannedData) => {
|
||||||
if (data && data.is_banned) {
|
if (data && data.is_banned) {
|
||||||
throw new Error('User was banned');
|
throw new Error('User was banned');
|
||||||
}
|
}
|
||||||
|
return data;
|
||||||
}).catch((err) => {
|
}).catch((err) => {
|
||||||
throw err;
|
throw err;
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue