Files
Compass/backend/api/src/get-supabase-token.ts
2026-03-06 15:27:49 +01:00

26 lines
868 B
TypeScript

import {ENV_CONFIG} from 'common/envs/constants'
import {sign} from 'jsonwebtoken'
import {APIErrors, APIHandler} from './helpers/endpoint'
export const getSupabaseToken: APIHandler<'get-supabase-token'> = async (_, auth) => {
const jwtSecret = process.env.SUPABASE_JWT_SECRET
if (jwtSecret == null) {
throw APIErrors.internalServerError("No SUPABASE_JWT_SECRET; couldn't sign token.")
}
const instanceId = ENV_CONFIG.supabaseInstanceId
if (!instanceId) {
throw APIErrors.internalServerError('No Supabase instance ID in config.')
}
const payload = {role: 'anon'} // postgres role
return {
jwt: sign(payload, jwtSecret, {
algorithm: 'HS256', // same as what supabase uses for its auth tokens
expiresIn: '1d',
audience: instanceId,
issuer: ENV_CONFIG.firebaseConfig.projectId,
subject: auth.uid,
}),
}
}