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 { FreshContext } from "$fresh/server.ts";
|
||||||
import { db } from "$root/databases/db.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 { AuthenticatedState } from "$root/defaults/interfaces.ts";
|
||||||
import { and, eq } from "npm:drizzle-orm@0.45.2";
|
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),
|
parseNumEtud(ctx.state.session.uid) === Number(ctx.params.numEtud),
|
||||||
own_note: (_req: Request, ctx: FreshContext<AuthenticatedState>) =>
|
own_note: (_req: Request, ctx: FreshContext<AuthenticatedState>) =>
|
||||||
parseNumEtud(ctx.state.session.uid) === Number(ctx.params.numEtud),
|
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;
|
export type RuleName = keyof typeof rules;
|
||||||
|
|||||||
Reference in New Issue
Block a user