v3: added a roles/permissions system, added user management tab on user profile
All checks were successful
Build and Publish Docker Image / build-and-push (push) Successful in 42s

This commit is contained in:
khannurien
2026-06-28 06:21:23 +00:00
parent b567e390d9
commit 810faaf21a
22 changed files with 341 additions and 60 deletions

24
src/utils/permissions.ts Normal file
View File

@@ -0,0 +1,24 @@
import type { PublicUser, Role } from "../model.ts";
// Mirror of api/lib/permissions.ts. Keep the two in sync.
export type Permission = "dump:moderate" | "comment:moderate" | "user:manage";
const ALL_PERMISSIONS: readonly Permission[] = [
"dump:moderate",
"comment:moderate",
"user:manage",
];
const ROLE_PERMISSIONS: Record<Role, readonly Permission[]> = {
admin: ALL_PERMISSIONS,
moderator: ["dump:moderate", "comment:moderate"],
user: [],
};
export function can(
user: Pick<PublicUser, "role"> | null | undefined,
permission: Permission,
): boolean {
if (!user) return false;
return ROLE_PERMISSIONS[user.role].includes(permission);
}