"use client" import { useState, useEffect } from "react" import { ProtectedRoute } from "@/components/protected-route" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table" import { Badge } from "@/components/ui/badge" import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Alert, AlertDescription } from "@/components/ui/alert" import { Plus, Edit, Trash2, ArrowLeft } from "lucide-react" import Link from "next/link" import { useAuth, type User } from "@/lib/hooks/use-auth" export default function UsersManagementPage() { return ( ) } function UsersManagementContent() { const { user: currentUser } = useAuth() const [users, setUsers] = useState<(User & { password?: string })[]>([]) const [isAddDialogOpen, setIsAddDialogOpen] = useState(false) const [editingUser, setEditingUser] = useState(null) const [newUser, setNewUser] = useState({ name: "", email: "", password: "", department: "", role: "user" as "user" | "admin", }) const [error, setError] = useState("") const departments = ["人力資源部", "資訊技術部", "財務部", "行銷部", "業務部", "研發部", "客服部", "其他"] useEffect(() => { loadUsers() }, []) const loadUsers = () => { const usersData = JSON.parse(localStorage.getItem("hr_users") || "[]") setUsers(usersData) } const handleAddUser = () => { setError("") if (!newUser.name || !newUser.email || !newUser.password || !newUser.department) { setError("請填寫所有必填欄位") return } if (users.some((u) => u.email === newUser.email)) { setError("該電子郵件已被使用") return } const user = { ...newUser, id: `user-${Date.now()}`, createdAt: new Date().toISOString(), } const updatedUsers = [...users, user] setUsers(updatedUsers) localStorage.setItem("hr_users", JSON.stringify(updatedUsers)) setNewUser({ name: "", email: "", password: "", department: "", role: "user", }) setIsAddDialogOpen(false) } const handleEditUser = (user: User) => { setEditingUser(user) setNewUser({ name: user.name, email: user.email, password: "", department: user.department, role: user.role, }) } const handleUpdateUser = () => { if (!editingUser) return setError("") if (!newUser.name || !newUser.email || !newUser.department) { setError("請填寫所有必填欄位") return } if (users.some((u) => u.email === newUser.email && u.id !== editingUser.id)) { setError("該電子郵件已被使用") return } const updatedUsers = users.map((u) => u.id === editingUser.id ? { ...u, name: newUser.name, email: newUser.email, department: newUser.department, role: newUser.role, ...(newUser.password && { password: newUser.password }), } : u, ) setUsers(updatedUsers) localStorage.setItem("hr_users", JSON.stringify(updatedUsers)) setEditingUser(null) setNewUser({ name: "", email: "", password: "", department: "", role: "user", }) } const handleDeleteUser = (userId: string) => { if (userId === currentUser?.id) { setError("無法刪除自己的帳戶") return } const updatedUsers = users.filter((u) => u.id !== userId) setUsers(updatedUsers) localStorage.setItem("hr_users", JSON.stringify(updatedUsers)) } return (
{/* Header */}

用戶管理

管理系統用戶和權限

{/* Stats */}
總用戶數
{users.length}
管理員
{users.filter((u) => u.role === "admin").length}
一般用戶
{users.filter((u) => u.role === "user").length}
{/* Users Table */}
用戶列表 管理系統中的所有用戶
新增用戶 建立新的系統用戶帳戶
setNewUser({ ...newUser, name: e.target.value })} placeholder="請輸入姓名" />
setNewUser({ ...newUser, email: e.target.value })} placeholder="請輸入電子郵件" />
setNewUser({ ...newUser, password: e.target.value })} placeholder="請輸入密碼" />
{error && ( {error} )}
姓名 電子郵件 部門 角色 建立時間 操作 {users.map((user) => ( {user.name} {user.email} {user.department} {user.role === "admin" ? "管理員" : "一般用戶"} {new Date(user.createdAt).toLocaleDateString()}
{user.id !== currentUser?.id && ( )}
))}
{/* Edit User Dialog */} setEditingUser(null)}> 編輯用戶 修改用戶資訊和權限
setNewUser({ ...newUser, name: e.target.value })} placeholder="請輸入姓名" />
setNewUser({ ...newUser, email: e.target.value })} placeholder="請輸入電子郵件" />
setNewUser({ ...newUser, password: e.target.value })} placeholder="請輸入新密碼" />
{error && ( {error} )}
) }