Working supabase structure

This commit is contained in:
2025-12-23 15:24:59 +01:00
parent b629b9a6e2
commit a39c4fa26d
10 changed files with 52 additions and 260 deletions
-83
View File
@@ -49,86 +49,3 @@ export async function GET(req: NextRequest) {
return NextResponse.json({ message: "ok", ...auth });
}
/**
* POST /api/auth
* Called by the client to request a temporary relay token for a DM server.
*
* Body: { server_id: string }
* Header: Authorization: Bearer <supabase_jwt>
*/
export async function POST(req: NextRequest) {
const { server_id } = await req.json();
const authHeader = req.cookies.get("token");
if (!server_id)
return NextResponse.json(
{ message: "Missing server_id in the json body" },
{ status: StatusCodes.BAD_REQUEST }
);
if (!authHeader)
return NextResponse.json(
{ message: "Missing Supabase Authorization header" },
{ status: StatusCodes.BAD_REQUEST }
);
const {
data: { user },
error,
} = await supabase.auth.getUser(authHeader.value);
if (error || !user) {
return NextResponse.json(
{ message: "Invalid Supabase token" },
{ status: StatusCodes.UNAUTHORIZED }
);
}
const { data: relayToken, error: errorRelay } = await supabase
.from("server_auth")
.insert({
user_id: user.id,
server_id,
})
.select()
.maybeSingle();
if (!relayToken || errorRelay)
return NextResponse.json(
{ message: "Failed to create relay token" },
{ status: StatusCodes.INTERNAL_SERVER_ERROR }
);
return NextResponse.json({ message: "ok", token: relayToken.key });
}
/**
* PUT /api/auth
* Called by the client to refresh the access token.
*/
export async function PUT(req: NextRequest) {
const refresh_token = req.cookies.get("refresh_token")?.value;
if (!refresh_token)
return NextResponse.json(
{ message: "Missing refresh_token cookie" },
{ status: StatusCodes.BAD_REQUEST }
);
const session = await supabase.auth.refreshSession({ refresh_token });
if (session.error)
return NextResponse.json(
{
message: session.error.message,
},
{ status: StatusCodes.INTERNAL_SERVER_ERROR }
);
return NextResponse.json({
message: "ok",
access_token: session.data.session?.access_token,
refresh_token: session.data.session?.refresh_token,
});
}