Implemented username reserve feature

This commit is contained in:
2021-03-03 04:27:48 +11:00
parent 34a5444705
commit 9a7e9313d8
13 changed files with 190 additions and 2 deletions
+1
View File
@@ -3,6 +3,7 @@ const route = (req, res) => {
req.session.account = null;
res.clearCookie('loggedin');
res.clearCookie('admin');
res.clearCookie('pseudonym');
return res.status(200).end();
};
+7
View File
@@ -0,0 +1,7 @@
const express = require('express');
const router = express.Router();
//reserve the name on the chat server (then get out of the way)
router.post('/reserve', require('./reserve'));
module.exports = router;
+23
View File
@@ -0,0 +1,23 @@
const fetch = require('node-fetch');
const FormData = require('form-data');
const route = async (req, res) => {
//build the fake form data object
let form = new FormData();
form.append('username', req.session?.account?.username);
try {
//reserve the UUID with the chat server (hop 1)
const result = await fetch(`http://${process.env.CHAT_URI}/reserve`, { method: 'POST', body: form });
const json = await result.json();
res.cookie('pseudonym', json.pseudonym);
res.status(200).send({ ok: true });
} catch(e) {
console.error('Chat server not found');
res.cookie('pseudonym', '.null');
res.status(200).send({ ok: false, error: 'Chat server not found' });
}
};
module.exports = route;
+3
View File
@@ -31,6 +31,9 @@ app.use(session({
//account management
app.use('/api/accounts', require('./accounts'));
//chat management
app.use('/api/chat', require('./chat'));
//administration
app.use('/api/admin', require('./admin'));
require('./admin/bookkeeper')(); //BUGFIX