mirror of
https://github.com/Drop-OSS/drop.git
synced 2025-11-10 12:32:09 +10:00
26 lines
662 B
TypeScript
26 lines
662 B
TypeScript
import { H3Error } from "h3";
|
|
import sessionHandler from "../internal/session";
|
|
|
|
export default defineNitroPlugin((nitro) => {
|
|
nitro.hooks.hook("error", async (error, { event }) => {
|
|
if (!event) return;
|
|
|
|
// Don't handle for API routes
|
|
if (event.path.startsWith("/api")) return;
|
|
|
|
// Make sure it's a web error
|
|
if (!(error instanceof H3Error)) return;
|
|
|
|
switch (error.statusCode) {
|
|
case 401:
|
|
case 403:
|
|
const userId = await sessionHandler.getUserId(event);
|
|
if (userId) break;
|
|
return sendRedirect(
|
|
event,
|
|
`/signin?redirect=${encodeURIComponent(event.path)}`
|
|
);
|
|
}
|
|
});
|
|
});
|