29 lines
921 B
TypeScript
29 lines
921 B
TypeScript
import { ExtendedError, Server, Socket } from "socket.io";
|
|
import jwt from "jsonwebtoken";
|
|
import { pubClient } from "modules/redis";
|
|
|
|
if (!process.env.DISPATCH_APP_TOKEN)
|
|
throw new Error("DISPATCH_APP_TOKEN is not defined");
|
|
|
|
export const jwtMiddleware = async (
|
|
socket: Socket,
|
|
next: (err?: ExtendedError) => void,
|
|
) => {
|
|
try {
|
|
const token = socket.handshake.auth?.token;
|
|
console.log(socket.handshake);
|
|
if (!token) return new Error("Authentication error");
|
|
const decoded = jwt.verify(token, process.env.DISPATCH_APP_TOKEN!);
|
|
// socket.data.userId = decoded.; // User ID lokal speichern
|
|
|
|
// Prüfen, ob der Nutzer ein Disponent ist
|
|
const userId: any = decoded;
|
|
socket.data.user = decoded; // Lokal speichern
|
|
|
|
// In Redis speichern: Key = 'connected_dispatchers', Feld = socket.id, Wert = JSON-String des Users
|
|
} catch (err) {
|
|
console.error(err);
|
|
next(new Error("Authentication error"));
|
|
}
|
|
};
|