mirror of
https://github.com/kmc7468/arkvault.git
synced 2026-02-04 08:06:56 +00:00
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import type { RequestEvent } from "@sveltejs/kit";
|
|
import { initTRPC, TRPCError } from "@trpc/server";
|
|
import superjson from "superjson";
|
|
import { authorizeMiddleware, authorizeClientMiddleware } from "./middlewares/authorize";
|
|
|
|
export const createContext = (event: RequestEvent) => event;
|
|
export type Context = Awaited<ReturnType<typeof createContext>>;
|
|
|
|
export const t = initTRPC.context<Context>().create({ transformer: superjson });
|
|
export const router = t.router;
|
|
export const publicProcedure = t.procedure;
|
|
|
|
const authedProcedure = publicProcedure.use(async ({ ctx, next }) => {
|
|
if (!ctx.locals.session) {
|
|
throw new TRPCError({ code: "UNAUTHORIZED" });
|
|
}
|
|
return next();
|
|
});
|
|
|
|
export const roleProcedure = {
|
|
any: authedProcedure.use(authorizeMiddleware("any")),
|
|
notClient: authedProcedure.use(authorizeMiddleware("notClient")),
|
|
anyClient: authedProcedure.use(authorizeClientMiddleware("anyClient")),
|
|
pendingClient: authedProcedure.use(authorizeClientMiddleware("pendingClient")),
|
|
activeClient: authedProcedure.use(authorizeClientMiddleware("activeClient")),
|
|
};
|