feat: Implement role-based access control and enhance permissions system

This commit is contained in:
beilunyang
2024-12-27 13:35:29 +08:00
parent e815d1bec5
commit 5a7c17752a
22 changed files with 1888 additions and 39 deletions

View File

@@ -0,0 +1,24 @@
import { Header } from "@/components/layout/header"
import { Button } from "@/components/ui/button"
import { Crown } from "lucide-react"
import Link from "next/link"
export default function NoPermissionPage() {
return (
<div className="bg-gradient-to-b from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800 h-screen">
<div className="container mx-auto h-full px-4 lg:px-8 max-w-[1600px]">
<Header />
<main className="h-full flex items-center justify-center">
<div className="text-center space-y-4">
<Crown className="w-12 h-12 text-primary mx-auto" />
<h1 className="text-2xl font-bold"></h1>
<p className="text-muted-foreground">访</p>
<Link href="/">
<Button></Button>
</Link>
</div>
</main>
</div>
</div>
)
}

View File

@@ -1,23 +1,29 @@
import { Header } from "@/components/layout/header"
import { ThreeColumnLayout } from "@/components/emails/three-column-layout"
import { NoPermissionDialog } from "@/components/no-permission-dialog"
import { auth } from "@/lib/auth"
import { redirect } from "next/navigation"
import { checkPermission } from "@/lib/auth"
import { PERMISSIONS } from "@/lib/permissions"
export const runtime = "edge"
export default async function MoePage() {
const session = await auth()
if (!session) {
if (!session?.user) {
redirect("/")
}
const hasPermission = await checkPermission(PERMISSIONS.MANAGE_EMAIL)
return (
<div className="bg-gradient-to-b from-gray-50 to-gray-100 dark:from-gray-900 dark:to-gray-800 h-screen">
<div className="container mx-auto h-full px-4 lg:px-8 max-w-[1600px]">
<Header />
<main className="h-full">
<ThreeColumnLayout />
{!hasPermission && <NoPermissionDialog />}
</main>
</div>
</div>