Working supabase structure
This commit is contained in:
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user