Files
web/apps/partner-sas/auth/scandic/session.ts
Anton Gunnarsson 36cd1a5cdf Merged in fix/sw-3627-pass-user-access-token-payment-callback (pull request #3189)
fix(SW-3627): Pass social session user token to payment callback apge

* Pass social session user token to payment callback apge


Approved-by: Linus Flood
2025-11-20 12:36:40 +00:00

76 lines
1.4 KiB
TypeScript

import "server-only"
import { getIronSession } from "iron-session"
import { cookies } from "next/headers"
import { dt } from "@scandic-hotels/common/dt"
import { env } from "@/env/server"
type SocialSession = {
access_token: string
refresh_token?: string
expires_at: string
}
async function internalGetSession() {
return await getIronSession<SocialSession>(await cookies(), {
password: env.IRON_SESSION_SECRET,
cookieName: "scandic_session",
})
}
export async function getSocialSession() {
const session = await internalGetSession()
if (!session?.access_token) {
return null
}
return session
}
export async function createSocialSession({
access_token,
refresh_token,
expires_in,
}: {
access_token: string
expires_in: number
refresh_token?: string
}) {
const session = await internalGetSession()
session.access_token = access_token
session.refresh_token = refresh_token
session.expires_at = dt()
.add(expires_in * 1000)
.toISOString()
await session.save()
}
export async function destroySocialSession() {
const session = await internalGetSession()
if (!session) return
session.destroy()
}
export function isValidSocialSession(
session: SocialSession | null
): session is SocialSession {
if (!session) {
return false
}
if (!session.access_token) {
return false
}
if (session.expires_at && dt(session.expires_at).isBefore(dt())) {
return false
}
return true
}