nuxt-supabase-team-auth
Version:
Drop-in Nuxt 3 module for team-based authentication with Supabase
41 lines (40 loc) • 1.23 kB
JavaScript
import { defineEventHandler, readBody, createError } from "h3";
import { serverSupabaseClient } from "#supabase/server";
export default defineEventHandler(async (event) => {
try {
const supabase = await serverSupabaseClient(event);
const body = await readBody(event);
const { accessToken, refreshToken } = body;
if (!accessToken || !refreshToken) {
throw createError({
statusCode: 400,
statusMessage: "Access Token and Refresh Token are required"
});
}
const { data, error } = await supabase.auth.setSession({
access_token: accessToken,
refresh_token: refreshToken
});
if (error) {
throw createError({
statusCode: error.status || 500,
statusMessage: error.message || "Failed to set session"
});
}
return {
success: true,
message: "Session synchronized and cookie set successfully",
userId: data?.session?.user?.id,
userEmail: data?.session?.user?.email
};
} catch (error) {
const errorObj = error;
if (errorObj.statusCode) {
throw error;
}
throw createError({
statusCode: 500,
statusMessage: errorObj.message || "Failed to sync session"
});
}
});