fcf0888864
Now, if the first pusher request fails, a waiting message will be displayed and the application will reconnect when the pusher comes back alive or the network connection is established again.
32 lines
1.1 KiB
TypeScript
32 lines
1.1 KiB
TypeScript
import { ADMIN_SOCKETS_TOKEN, SECRET_KEY } from "../Enum/EnvironmentVariable";
|
|
import Jwt from "jsonwebtoken";
|
|
|
|
export interface AuthTokenData {
|
|
identifier: string; //will be a email if logged in or an uuid if anonymous
|
|
accessToken?: string;
|
|
}
|
|
export interface AdminSocketTokenData {
|
|
authorizedRoomIds: string[]; //the list of rooms the client is authorized to read from.
|
|
}
|
|
export const tokenInvalidException = "tokenInvalid";
|
|
|
|
class JWTTokenManager {
|
|
public verifyAdminSocketToken(token: string): AdminSocketTokenData {
|
|
return Jwt.verify(token, ADMIN_SOCKETS_TOKEN) as AdminSocketTokenData;
|
|
}
|
|
|
|
public createAuthToken(identifier: string, accessToken?: string) {
|
|
return Jwt.sign({ identifier, accessToken }, SECRET_KEY, { expiresIn: "30d" });
|
|
}
|
|
|
|
public verifyJWTToken(token: string, ignoreExpiration: boolean = false): AuthTokenData {
|
|
try {
|
|
return Jwt.verify(token, SECRET_KEY, { ignoreExpiration }) as AuthTokenData;
|
|
} catch (e) {
|
|
throw { reason: tokenInvalidException, message: e.message };
|
|
}
|
|
}
|
|
}
|
|
|
|
export const jwtTokenManager = new JWTTokenManager();
|