add useless debug panel and do not allow user to subscribe twice to room to be safe
This commit is contained in:
parent
9d1adfe748
commit
ced4d4652a
3 changed files with 52 additions and 15 deletions
|
@ -30,7 +30,7 @@ GatewayServer.prototype.eventSetup = function() {
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (socket.isConnected) return;
|
if (socket.isConnected) return;
|
||||||
console.log('[*] [gateway] [handshake] User still not connected after timeout, removing...');
|
console.log('[E] [gateway] [handshake] User still not connected after timeout, removing...');
|
||||||
socket.disconnect();
|
socket.disconnect();
|
||||||
socket.disconnect(true);
|
socket.disconnect(true);
|
||||||
}, config.gatewayStillNotConnectedTimeoutMS);
|
}, config.gatewayStillNotConnectedTimeoutMS);
|
||||||
|
@ -108,13 +108,15 @@ GatewayServer.prototype.eventSetup = function() {
|
||||||
|
|
||||||
socket.on('subscribe', async (categories) => {
|
socket.on('subscribe', async (categories) => {
|
||||||
if (!categories || !Array.isArray(categories) || categories === []) return;
|
if (!categories || !Array.isArray(categories) || categories === []) return;
|
||||||
for (let v of categories) {
|
for (const v of categories) {
|
||||||
|
if (!v) continue;
|
||||||
// TODO: When/if category permissions are added, check if the user has permissions for that category
|
// TODO: When/if category permissions are added, check if the user has permissions for that category
|
||||||
const category = await Category.findById(v);
|
const category = await Category.findById(v);
|
||||||
if (category && category.title && category._id) {
|
if (category && category.title && category._id) {
|
||||||
if (!socket.joinedCategories) socket.joinedCategories = {};
|
if (!socket.joinedCategories) socket.joinedCategories = {};
|
||||||
socket.joinedCategories[v] = category.title;
|
if (socket.joinedCategories[category._id]) continue;
|
||||||
socket.join(v);
|
socket.joinedCategories[category._id] = category.title;
|
||||||
|
socket.join(category._id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
24
app/app.html
24
app/app.html
|
@ -47,6 +47,29 @@
|
||||||
<body>
|
<body>
|
||||||
<div id="app">
|
<div id="app">
|
||||||
<div id="appContainer" v-if="showApp">
|
<div id="appContainer" v-if="showApp">
|
||||||
|
<md-dialog id="debug-dialog" :md-active.sync="dialog.show.debug">
|
||||||
|
<md-dialog-title>Debug info and shit</md-dialog-title>
|
||||||
|
|
||||||
|
<md-dialog-content>
|
||||||
|
<p>gateway.isConnected: {{ gateway.isConnected }}</p>
|
||||||
|
<p v-if="gateway.socket.id">gateway.socket.id: {{ gateway.socket.id }}</p>
|
||||||
|
<p v-if="gateway.debugInfo">gateway.debugInfo: {{ JSON.stringify(gateway.debugInfo) }}</p>
|
||||||
|
<p v-if="loggedInUser._id">userLoggedIn: true</p>
|
||||||
|
<p v-if="!loggedInUser._id">userLoggedIn: false</p>
|
||||||
|
<div id="debug-logged-in-data" v-if="loggedInUser">
|
||||||
|
<p>loggedInUser.username: {{ loggedInUser.username }}</p>
|
||||||
|
<p>loggedInUser._id: {{ loggedInUser._id }}</p>
|
||||||
|
<p>loggedInUser.permissionLevel: {{ loggedInUser.permissionLevel }}</p>
|
||||||
|
<p>loggedInUser.role: {{ loggedInUser.role }}</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<md-dialog-actions>
|
||||||
|
<md-button @click="debugDump()">Dump</md-button>
|
||||||
|
<md-button @click="dialog.show.debug = false">Close</md-button>
|
||||||
|
</md-dialog-actions>
|
||||||
|
</md-dialog-content>
|
||||||
|
</md-dialog>
|
||||||
|
|
||||||
<md-dialog id="create-category-dialog" :md-active.sync="dialog.show.createCategory">
|
<md-dialog id="create-category-dialog" :md-active.sync="dialog.show.createCategory">
|
||||||
<md-dialog-title>Create category</md-dialog-title>
|
<md-dialog-title>Create category</md-dialog-title>
|
||||||
|
|
||||||
|
@ -102,6 +125,7 @@
|
||||||
<md-button md-menu-trigger>{{ loggedInUser.username }}</md-button>
|
<md-button md-menu-trigger>{{ loggedInUser.username }}</md-button>
|
||||||
<md-menu-content>
|
<md-menu-content>
|
||||||
<md-menu-item @click="navigateToAccountManager()">Manage account</md-menu-item>
|
<md-menu-item @click="navigateToAccountManager()">Manage account</md-menu-item>
|
||||||
|
<md-menu-item @click="toggleDebugDialog()">Debug info and shit</md-menu-item>
|
||||||
</md-menu-content>
|
</md-menu-content>
|
||||||
</md-menu>
|
</md-menu>
|
||||||
</md-toolbar>
|
</md-toolbar>
|
||||||
|
|
|
@ -84,6 +84,7 @@ GatewayConnection.prototype.connect = function(token) {
|
||||||
console.log('[*] [gateway] [handshake] Got hello from server, sending yoo...', debugInfo);
|
console.log('[*] [gateway] [handshake] Got hello from server, sending yoo...', debugInfo);
|
||||||
this.socket.emit('yoo');
|
this.socket.emit('yoo');
|
||||||
this.isConnected = true;
|
this.isConnected = true;
|
||||||
|
this.debugInfo = debugInfo;
|
||||||
this.onConnect('CONNECT_RECEIVED_HELLO');
|
this.onConnect('CONNECT_RECEIVED_HELLO');
|
||||||
console.log('[*] [gateway] [handshake] Assuming that server received yoo and that connection is completed.');
|
console.log('[*] [gateway] [handshake] Assuming that server received yoo and that connection is completed.');
|
||||||
});
|
});
|
||||||
|
@ -150,7 +151,8 @@ const app = new Vue({
|
||||||
dialog: {
|
dialog: {
|
||||||
show: {
|
show: {
|
||||||
createPost: false,
|
createPost: false,
|
||||||
createCategory: false
|
createCategory: false,
|
||||||
|
debug: false
|
||||||
},
|
},
|
||||||
text: {
|
text: {
|
||||||
createPost: {
|
createPost: {
|
||||||
|
@ -242,6 +244,15 @@ const app = new Vue({
|
||||||
this.message.typed = '';
|
this.message.typed = '';
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Debug
|
||||||
|
toggleDebugDialog: async function() {
|
||||||
|
this.dialog.show.debug = !this.dialog.show.debug;
|
||||||
|
},
|
||||||
|
debugDump: async function() {
|
||||||
|
console.log('[DEBUG DUMP] [gateway]', this.gateway);
|
||||||
|
console.log('[DEBUG DUMP] [loggedInUser] (this contains sensitive information about the current logged in user, do not leak it to other people lol)', this.loggedInUser);
|
||||||
|
},
|
||||||
|
|
||||||
// Category and post browsing
|
// Category and post browsing
|
||||||
browseCategories: async function() {
|
browseCategories: async function() {
|
||||||
const res = await fetch(`${window.location.origin}/api/v1/content/category/list?count=50`, {
|
const res = await fetch(`${window.location.origin}/api/v1/content/category/list?count=50`, {
|
||||||
|
@ -387,6 +398,11 @@ const app = new Vue({
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
|
this.okNotification('Successfully created post');
|
||||||
|
this.dialog.show.createPost = false;
|
||||||
|
this.browse(this.selection.category);
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
if (res.status === 401 || res.status === 403) {
|
if (res.status === 401 || res.status === 403) {
|
||||||
this.okNotification('You are not allowed to do that');
|
this.okNotification('You are not allowed to do that');
|
||||||
return;
|
return;
|
||||||
|
@ -399,11 +415,6 @@ const app = new Vue({
|
||||||
const json = await res.json();
|
const json = await res.json();
|
||||||
this.okNotification(getCreatePostError(json));
|
this.okNotification(getCreatePostError(json));
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
this.okNotification('Successfully created post');
|
|
||||||
this.dialog.show.createPost = false;
|
|
||||||
this.browse(this.selection.category);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
createCategory: async function() {
|
createCategory: async function() {
|
||||||
|
@ -422,6 +433,11 @@ const app = new Vue({
|
||||||
});
|
});
|
||||||
|
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
|
this.okNotification('Successfully created category');
|
||||||
|
this.dialog.show.createCategory = false;
|
||||||
|
this.browseCategories();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
if (res.status === 401 || res.status === 403) {
|
if (res.status === 401 || res.status === 403) {
|
||||||
this.okNotification('You are not allowed to do that');
|
this.okNotification('You are not allowed to do that');
|
||||||
return;
|
return;
|
||||||
|
@ -434,11 +450,6 @@ const app = new Vue({
|
||||||
const json = await res.json();
|
const json = await res.json();
|
||||||
this.okNotification(getCreateCategoryError(json));
|
this.okNotification(getCreateCategoryError(json));
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
this.okNotification('Successfully created category');
|
|
||||||
this.dialog.show.createCategory = false;
|
|
||||||
this.browseCategories();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Reference in a new issue