feat(defaults/withRules.ts): add own_teaching_note rule for teacher access
This commit is contained in:
+19
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user