mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-14 04:54:16 +00:00
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
import SessionModel from "../models/session"
|
|
import request from "../handlers/request"
|
|
import { reconnectWebsockets } from "../"
|
|
|
|
export default async (refreshToken) => {
|
|
__comty_shared_state.eventBus.emit("session.expiredExceptionEvent", refreshToken)
|
|
|
|
__comty_shared_state.onExpiredExceptionEvent = true
|
|
|
|
const expiredToken = await SessionModel.token
|
|
|
|
// send request to regenerate token
|
|
const response = await request({
|
|
method: "POST",
|
|
url: "/session/regenerate",
|
|
data: {
|
|
expiredToken: expiredToken,
|
|
refreshToken,
|
|
}
|
|
}).catch((error) => {
|
|
console.error(`Failed to regenerate token: ${error.message}`)
|
|
return false
|
|
})
|
|
|
|
if (!response) {
|
|
return __comty_shared_state.eventBus.emit("session.invalid", "Failed to regenerate token")
|
|
}
|
|
|
|
if (!response.data?.token) {
|
|
return __comty_shared_state.eventBus.emit("session.invalid", "Failed to regenerate token, invalid server response.")
|
|
}
|
|
|
|
// set new token
|
|
SessionModel.token = response.data.token
|
|
|
|
__comty_shared_state.onExpiredExceptionEvent = false
|
|
|
|
// emit event
|
|
__comty_shared_state.eventBus.emit("session.regenerated")
|
|
|
|
// reconnect websockets
|
|
reconnectWebsockets()
|
|
} |