import AuthenticatedLayout from '@/Layouts/AuthenticatedLayout'; import { Head, Link, router } from '@inertiajs/react'; import { cn } from "@/lib/utils"; import { Shield, Plus, Pencil, Trash2, Users } from 'lucide-react'; import { Button } from '@/Components/ui/button'; import { Badge } from '@/Components/ui/badge'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/Components/ui/table"; import { format } from 'date-fns'; import { toast } from 'sonner'; import { Can } from '@/Components/Permission/Can'; import { useState } from 'react'; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, } from "@/Components/ui/dialog"; interface User { id: number; name: string; username: string; } interface Role { id: number; name: string; display_name: string; users_count: number; permissions_count: number; created_at: string; users?: User[]; } interface Props { roles: Role[]; } export default function RoleIndex({ roles }: Props) { const [selectedRole, setSelectedRole] = useState(null); const handleDelete = (id: number, name: string) => { if (confirm(`確定要刪除角色「${name}」嗎?此操作無法復原。`)) { router.delete(route('roles.destroy', id), { onSuccess: () => toast.success('角色已刪除'), }); } }; return (

角色與權限

設定系統角色與功能存取權限

# 名稱 代號 權限數量 使用者人數 建立時間 操作 {roles.map((role, index) => ( {index + 1}
{role.display_name}
{role.name} {role.permissions_count} 項權限 {format(new Date(role.created_at), 'yyyy/MM/dd')} {role.name !== 'super-admin' && (
)}
))}
{/* 成員名單對話框 */} !open && setSelectedRole(null)}> {selectedRole?.display_name} - 成員名單 目前共有 {selectedRole?.users_count} 位使用者具備此角色權限
{selectedRole?.users && selectedRole.users.length > 0 ? (
{selectedRole.users.map((user) => (
{user.name.charAt(0)}

{user.name}

@{user.username}

查看帳號
))}
) : (
暫無成員
)}
); }