feat(defaults/withRules.ts): add own_teaching_note rule for teacher access

This commit is contained in:
2026-04-22 15:28:33 +02:00
parent ad64fd0a99
commit e2d22ff4b3
+19 -1
View File
@@ -1,6 +1,10 @@
import { FreshContext } from "$fresh/server.ts";
import { db } from "$root/databases/db.ts";
import { rolePermissions, users } from "$root/databases/schema.ts";
import {
enseignements,
rolePermissions,
users,
} from "$root/databases/schema.ts";
import { AuthenticatedState } from "$root/defaults/interfaces.ts";
import { and, eq } from "npm:drizzle-orm@0.45.2";
@@ -54,6 +58,20 @@ const rules = {
parseNumEtud(ctx.state.session.uid) === Number(ctx.params.numEtud),
own_note: (_req: Request, ctx: FreshContext<AuthenticatedState>) =>
parseNumEtud(ctx.state.session.uid) === Number(ctx.params.numEtud),
// Contextual rule — teacher accessing notes for a module they teach
own_teaching_note: async (
_req: Request,
ctx: FreshContext<AuthenticatedState>,
) => {
const [row] = await db.select().from(enseignements).where(
and(
eq(enseignements.idProf, ctx.state.session.uid),
eq(enseignements.idModule, ctx.params.idModule),
),
);
return !!row;
},
};
export type RuleName = keyof typeof rules;