mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 12:17:08 +00:00
Process JWT messages over WebSockets
This commit is contained in:
@@ -2,6 +2,7 @@ const ws = require('ws');
|
||||
const URL = require('url');
|
||||
const { listen } = require('../lib/db/notify');
|
||||
const channels = require('../lib/db/channels');
|
||||
const jwt = require('../lib/jwt');
|
||||
|
||||
function start (server, pingInterval=30000) {
|
||||
|
||||
@@ -9,7 +10,31 @@ function start (server, pingInterval=30000) {
|
||||
wsServer.on('connection', socket => {
|
||||
socket.alive = true;
|
||||
socket.on('pong', function () { this.alive = true; })
|
||||
socket.on('message', message => console.log(message));
|
||||
socket.on('message', message => {
|
||||
// console.log("Websocket message:");
|
||||
// console.log(message);
|
||||
try {
|
||||
const payload = JSON.parse(message);
|
||||
if (payload?.jwt) {
|
||||
// console.log("Refresh JWT token", payload);
|
||||
const decoded = jwt.checkValidCredentials({jwt: payload.jwt});
|
||||
// console.log("Decoded", decoded);
|
||||
if (decoded) {
|
||||
delete decoded.exp;
|
||||
const token = jwt.issue(decoded);
|
||||
socket.send(JSON.stringify({
|
||||
channel: ".jwt",
|
||||
payload: {
|
||||
token
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn("Websocket message decoding failed", err);
|
||||
}
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
server.on('upgrade', (request, socket, head) => {
|
||||
|
||||
Reference in New Issue
Block a user