28 lines
750 B
TypeScript
28 lines
750 B
TypeScript
import type { RequestHandler } from "./$types"
|
|
|
|
import { error, json } from "@sveltejs/kit"
|
|
|
|
import UserMgmt from "$lib/server/usermgmt"
|
|
import { RefreshResponseCause } from "$lib/errors"
|
|
|
|
export const POST: RequestHandler = async ({ request }) => {
|
|
|
|
const data = await request.json()
|
|
|
|
const token = data["token"]
|
|
if (!token || typeof token !== "string") {
|
|
return error(400, { cause: RefreshResponseCause.MalformedRequest, message: "token must be provided as string." })
|
|
}
|
|
|
|
const new_session = await UserMgmt.refresh_session(token)
|
|
|
|
if (!new_session) {
|
|
return error(401, { cause: RefreshResponseCause.InvalidSession, message: "No session for token" })
|
|
}
|
|
|
|
return json({
|
|
token: new_session.token,
|
|
expires: new_session.expires
|
|
})
|
|
}
|