1 line
42 KiB
JSON
1 line
42 KiB
JSON
{"ast":null,"code":"import _objectSpread from\"/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/@babel/runtime/helpers/esm/objectSpread2.js\";import React,{useState}from'react';import{Grid,Paper,Typography,Box,Button,Chip,IconButton,TextField,InputAdornment,FormControl,InputLabel,Select,MenuItem,Dialog,DialogTitle,DialogContent,DialogActions,Avatar,Alert,Card,CardContent}from'@mui/material';import{Search,Add,Edit,Delete}from'@mui/icons-material';import{DataGrid}from'@mui/x-data-grid';import{useAuth}from'../../components/Auth/AuthContext';import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";const mockUsers=[{id:1,username:'admin',email:'admin@company.com',name:'System Administrator',role:'ADMIN',department:'IT',lastLogin:'2024-01-15 10:30',status:'active',avatar:null,created:'2024-01-01',permissions:['All Permissions']},{id:2,username:'john.smith',email:'john.smith@company.com',name:'John Smith',role:'IT_STAFF',department:'Infrastructure',lastLogin:'2024-01-15 09:45',status:'active',avatar:null,created:'2024-01-02',permissions:['Incident Management','Problem Management','Change Management']},{id:3,username:'sarah.johnson',email:'sarah.johnson@company.com',name:'Sarah Johnson',role:'MANAGER',department:'IT Operations',lastLogin:'2024-01-15 08:20',status:'active',avatar:null,created:'2024-01-03',permissions:['Reporting','Management','Approval']},{id:4,username:'mike.davis',email:'mike.davis@company.com',name:'Mike Davis',role:'IT_STAFF',department:'Applications',lastLogin:'2024-01-14 16:30',status:'active',avatar:null,created:'2024-01-04',permissions:['Incident Management','Problem Management']},{id:5,username:'lisa.wilson',email:'lisa.wilson@company.com',name:'Lisa Wilson',role:'END_USER',department:'HR',lastLogin:'2024-01-15 11:15',status:'active',avatar:null,created:'2024-01-05',permissions:['Self-Service','Knowledge Base']},{id:6,username:'auditor1',email:'auditor1@company.com',name:'Audit Specialist',role:'AUDITOR',department:'Compliance',lastLogin:'2024-01-14 14:20',status:'active',avatar:null,created:'2024-01-06',permissions:['Audit','Compliance','Reporting']}];const UserManagement=()=>{var _ROLES6;const{user:currentUser}=useAuth();const[users,setUsers]=useState(mockUsers);const[searchTerm,setSearchTerm]=useState('');const[roleFilter,setRoleFilter]=useState('All');const[statusFilter,setStatusFilter]=useState('All');const[selectedUser,setSelectedUser]=useState(null);const[userDialogOpen,setUserDialogOpen]=useState(false);const[tabValue,setTabValue]=useState(0);const[newUser,setNewUser]=useState({username:'',email:'',name:'',role:'END_USER',department:'',status:'active'});const columns=[{field:'id',headerName:'ID',width:80},{field:'avatar',headerName:'Avatar',width:80,renderCell:params=>/*#__PURE__*/_jsx(Avatar,{sx:{width:32,height:32,bgcolor:'primary.main'},children:params.row.name.charAt(0)})},{field:'name',headerName:'Name',width:200},{field:'username',headerName:'Username',width:150},{field:'email',headerName:'Email',width:250},{field:'role',headerName:'Role',width:120,renderCell:params=>{var _ROLES,_ROLES2;return/*#__PURE__*/_jsx(Chip,{label:((_ROLES=ROLES[params.row.role])===null||_ROLES===void 0?void 0:_ROLES.name)||params.row.role,size:\"small\",sx:{bgcolor:((_ROLES2=ROLES[params.row.role])===null||_ROLES2===void 0?void 0:_ROLES2.color)||'default',color:'white'}});}},{field:'department',headerName:'Department',width:150},{field:'status',headerName:'Status',width:100,renderCell:params=>/*#__PURE__*/_jsx(Chip,{label:params.row.status,size:\"small\",color:params.row.status==='active'?'success':'error'})},{field:'lastLogin',headerName:'Last Login',width:150},{field:'actions',headerName:'Actions',width:120,renderCell:params=>/*#__PURE__*/_jsxs(Box,{children:[/*#__PURE__*/_jsx(IconButton,{size:\"small\",onClick:()=>handleEditUser(params.row),children:/*#__PURE__*/_jsx(Edit,{})}),/*#__PURE__*/_jsx(IconButton,{size:\"small\",onClick:()=>handleDeleteUser(params.row.id),children:/*#__PURE__*/_jsx(Delete,{})})]})}];const handleEditUser=user=>{setSelectedUser(user);setNewUser(user);setUserDialogOpen(true);};const handleDeleteUser=userId=>{if(window.confirm('Are you sure you want to delete this user?')){setUsers(users.filter(u=>u.id!==userId));}};const handleCreateUser=()=>{setSelectedUser(null);setNewUser({username:'',email:'',name:'',role:'END_USER',department:'',status:'active'});setUserDialogOpen(true);};const handleSaveUser=()=>{if(selectedUser){// Update existing user\nsetUsers(users.map(u=>u.id===selectedUser.id?_objectSpread(_objectSpread(_objectSpread({},u),newUser),{},{id:selectedUser.id}):u));}else{var _ROLES3;// Create new user\nconst newId=Math.max(...users.map(u=>u.id))+1;setUsers([...users,_objectSpread(_objectSpread({},newUser),{},{id:newId,lastLogin:'Never',avatar:null,created:new Date().toISOString().split('T')[0],permissions:((_ROLES3=ROLES[newUser.role])===null||_ROLES3===void 0?void 0:_ROLES3.permissions)||[]})]);}setUserDialogOpen(false);};const getRoleStats=()=>{const stats={};Object.keys(ROLES).forEach(role=>{stats[role]=users.filter(u=>u.role===role).length;});return stats;};const filteredUsers=users.filter(user=>{const matchesSearch=user.name.toLowerCase().includes(searchTerm.toLowerCase())||user.username.toLowerCase().includes(searchTerm.toLowerCase())||user.email.toLowerCase().includes(searchTerm.toLowerCase());const matchesRole=roleFilter==='All'||user.role===roleFilter;const matchesStatus=statusFilter==='All'||user.status===statusFilter;return matchesSearch&&matchesRole&&matchesStatus;});const roleStats=getRoleStats();return/*#__PURE__*/_jsxs(Box,{children:[/*#__PURE__*/_jsxs(Box,{sx:{display:'flex',justifyContent:'space-between',alignItems:'center',mb:3},children:[/*#__PURE__*/_jsx(Typography,{variant:\"h4\",gutterBottom:true,children:\"User Management\"}),/*#__PURE__*/_jsx(Button,{variant:\"contained\",startIcon:/*#__PURE__*/_jsx(Add,{}),onClick:handleCreateUser,children:\"Add User\"})]}),/*#__PURE__*/_jsx(Grid,{container:true,spacing:3,sx:{mb:3},children:Object.entries(roleStats).map(_ref=>{var _ROLES4,_ROLES5;let[role,count]=_ref;return/*#__PURE__*/_jsx(Grid,{item:true,xs:12,sm:6,md:2.4,children:/*#__PURE__*/_jsx(Card,{children:/*#__PURE__*/_jsxs(CardContent,{sx:{textAlign:'center'},children:[/*#__PURE__*/_jsx(Typography,{variant:\"h4\",sx:{color:(_ROLES4=ROLES[role])===null||_ROLES4===void 0?void 0:_ROLES4.color},children:count}),/*#__PURE__*/_jsx(Typography,{variant:\"body2\",color:\"text.secondary\",children:(_ROLES5=ROLES[role])===null||_ROLES5===void 0?void 0:_ROLES5.name})]})})},role);})}),/*#__PURE__*/_jsx(Paper,{sx:{p:2,mb:3},children:/*#__PURE__*/_jsxs(Grid,{container:true,spacing:2,alignItems:\"center\",children:[/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:4,children:/*#__PURE__*/_jsx(TextField,{fullWidth:true,placeholder:\"Search users...\",value:searchTerm,onChange:e=>setSearchTerm(e.target.value),InputProps:{startAdornment:/*#__PURE__*/_jsx(InputAdornment,{position:\"start\",children:/*#__PURE__*/_jsx(Search,{})})}})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:3,children:/*#__PURE__*/_jsxs(FormControl,{fullWidth:true,children:[/*#__PURE__*/_jsx(InputLabel,{children:\"Role\"}),/*#__PURE__*/_jsxs(Select,{value:roleFilter,label:\"Role\",onChange:e=>setRoleFilter(e.target.value),children:[/*#__PURE__*/_jsx(MenuItem,{value:\"All\",children:\"All Roles\"}),Object.entries(ROLES).map(_ref2=>{let[key,role]=_ref2;return/*#__PURE__*/_jsx(MenuItem,{value:key,children:role.name},key);})]})]})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:3,children:/*#__PURE__*/_jsxs(FormControl,{fullWidth:true,children:[/*#__PURE__*/_jsx(InputLabel,{children:\"Status\"}),/*#__PURE__*/_jsxs(Select,{value:statusFilter,label:\"Status\",onChange:e=>setStatusFilter(e.target.value),children:[/*#__PURE__*/_jsx(MenuItem,{value:\"All\",children:\"All Status\"}),/*#__PURE__*/_jsx(MenuItem,{value:\"active\",children:\"Active\"}),/*#__PURE__*/_jsx(MenuItem,{value:\"inactive\",children:\"Inactive\"})]})]})})]})}),/*#__PURE__*/_jsx(Paper,{sx:{p:2},children:/*#__PURE__*/_jsx(DataGrid,{rows:filteredUsers,columns:columns,pageSize:10,rowsPerPageOptions:[10,25,50],checkboxSelection:true,disableSelectionOnClick:true,sx:{height:400}})}),/*#__PURE__*/_jsxs(Dialog,{open:userDialogOpen,onClose:()=>setUserDialogOpen(false),maxWidth:\"md\",fullWidth:true,children:[/*#__PURE__*/_jsx(DialogTitle,{children:selectedUser?'Edit User':'Create New User'}),/*#__PURE__*/_jsx(DialogContent,{children:/*#__PURE__*/_jsxs(Grid,{container:true,spacing:2,sx:{mt:1},children:[/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsx(TextField,{fullWidth:true,label:\"Username\",value:newUser.username,onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{username:e.target.value})),required:true})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsx(TextField,{fullWidth:true,label:\"Email\",type:\"email\",value:newUser.email,onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{email:e.target.value})),required:true})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsx(TextField,{fullWidth:true,label:\"Full Name\",value:newUser.name,onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{name:e.target.value})),required:true})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsx(TextField,{fullWidth:true,label:\"Department\",value:newUser.department,onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{department:e.target.value}))})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsxs(FormControl,{fullWidth:true,required:true,children:[/*#__PURE__*/_jsx(InputLabel,{children:\"Role\"}),/*#__PURE__*/_jsx(Select,{value:newUser.role,label:\"Role\",onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{role:e.target.value})),children:Object.entries(ROLES).map(_ref3=>{let[key,role]=_ref3;return/*#__PURE__*/_jsx(MenuItem,{value:key,children:/*#__PURE__*/_jsxs(Box,{sx:{display:'flex',alignItems:'center'},children:[/*#__PURE__*/_jsx(Box,{sx:{width:12,height:12,borderRadius:'50%',bgcolor:role.color,mr:1}}),role.name]})},key);})})]})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,md:6,children:/*#__PURE__*/_jsxs(FormControl,{fullWidth:true,children:[/*#__PURE__*/_jsx(InputLabel,{children:\"Status\"}),/*#__PURE__*/_jsxs(Select,{value:newUser.status,label:\"Status\",onChange:e=>setNewUser(prev=>_objectSpread(_objectSpread({},prev),{},{status:e.target.value})),children:[/*#__PURE__*/_jsx(MenuItem,{value:\"active\",children:\"Active\"}),/*#__PURE__*/_jsx(MenuItem,{value:\"inactive\",children:\"Inactive\"})]})]})}),/*#__PURE__*/_jsx(Grid,{item:true,xs:12,children:/*#__PURE__*/_jsxs(Alert,{severity:\"info\",children:[/*#__PURE__*/_jsx(Typography,{variant:\"subtitle2\",children:\"Role Permissions:\"}),/*#__PURE__*/_jsx(Typography,{variant:\"body2\",children:((_ROLES6=ROLES[newUser.role])===null||_ROLES6===void 0?void 0:_ROLES6.permissions.join(', '))||'No permissions'})]})})]})}),/*#__PURE__*/_jsxs(DialogActions,{children:[/*#__PURE__*/_jsx(Button,{onClick:()=>setUserDialogOpen(false),children:\"Cancel\"}),/*#__PURE__*/_jsx(Button,{variant:\"contained\",onClick:handleSaveUser,children:selectedUser?'Update':'Create'})]})]})]});};export default UserManagement;","map":{"version":3,"names":["React","useState","Grid","Paper","Typography","Box","Button","Chip","IconButton","TextField","InputAdornment","FormControl","InputLabel","Select","MenuItem","Dialog","DialogTitle","DialogContent","DialogActions","Avatar","Alert","Card","CardContent","Search","Add","Edit","Delete","DataGrid","useAuth","jsx","_jsx","jsxs","_jsxs","mockUsers","id","username","email","name","role","department","lastLogin","status","avatar","created","permissions","UserManagement","_ROLES6","user","currentUser","users","setUsers","searchTerm","setSearchTerm","roleFilter","setRoleFilter","statusFilter","setStatusFilter","selectedUser","setSelectedUser","userDialogOpen","setUserDialogOpen","tabValue","setTabValue","newUser","setNewUser","columns","field","headerName","width","renderCell","params","sx","height","bgcolor","children","row","charAt","_ROLES","_ROLES2","label","ROLES","size","color","onClick","handleEditUser","handleDeleteUser","userId","window","confirm","filter","u","handleCreateUser","handleSaveUser","map","_objectSpread","_ROLES3","newId","Math","max","Date","toISOString","split","getRoleStats","stats","Object","keys","forEach","length","filteredUsers","matchesSearch","toLowerCase","includes","matchesRole","matchesStatus","roleStats","display","justifyContent","alignItems","mb","variant","gutterBottom","startIcon","container","spacing","entries","_ref","_ROLES4","_ROLES5","count","item","xs","sm","md","textAlign","p","fullWidth","placeholder","value","onChange","e","target","InputProps","startAdornment","position","_ref2","key","rows","pageSize","rowsPerPageOptions","checkboxSelection","disableSelectionOnClick","open","onClose","maxWidth","mt","prev","required","type","_ref3","borderRadius","mr","severity","join"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/src/pages/Admin/UserManagement.tsx"],"sourcesContent":["import React, { useState } from 'react';\nimport {\n Grid,\n Paper,\n Typography,\n Box,\n Button,\n Chip,\n IconButton,\n TextField,\n InputAdornment,\n FormControl,\n InputLabel,\n Select,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Avatar,\n Alert,\n Card,\n CardContent,\n} from '@mui/material';\nimport {\n Search,\n Add,\n Edit,\n Delete,\n} from '@mui/icons-material';\nimport { DataGrid } from '@mui/x-data-grid';\nimport { useAuth } from '../../components/Auth/AuthContext';\n\nconst mockUsers = [\n {\n id: 1,\n username: 'admin',\n email: 'admin@company.com',\n name: 'System Administrator',\n role: 'ADMIN',\n department: 'IT',\n lastLogin: '2024-01-15 10:30',\n status: 'active',\n avatar: null,\n created: '2024-01-01',\n permissions: ['All Permissions']\n },\n {\n id: 2,\n username: 'john.smith',\n email: 'john.smith@company.com',\n name: 'John Smith',\n role: 'IT_STAFF',\n department: 'Infrastructure',\n lastLogin: '2024-01-15 09:45',\n status: 'active',\n avatar: null,\n created: '2024-01-02',\n permissions: ['Incident Management', 'Problem Management', 'Change Management']\n },\n {\n id: 3,\n username: 'sarah.johnson',\n email: 'sarah.johnson@company.com',\n name: 'Sarah Johnson',\n role: 'MANAGER',\n department: 'IT Operations',\n lastLogin: '2024-01-15 08:20',\n status: 'active',\n avatar: null,\n created: '2024-01-03',\n permissions: ['Reporting', 'Management', 'Approval']\n },\n {\n id: 4,\n username: 'mike.davis',\n email: 'mike.davis@company.com',\n name: 'Mike Davis',\n role: 'IT_STAFF',\n department: 'Applications',\n lastLogin: '2024-01-14 16:30',\n status: 'active',\n avatar: null,\n created: '2024-01-04',\n permissions: ['Incident Management', 'Problem Management']\n },\n {\n id: 5,\n username: 'lisa.wilson',\n email: 'lisa.wilson@company.com',\n name: 'Lisa Wilson',\n role: 'END_USER',\n department: 'HR',\n lastLogin: '2024-01-15 11:15',\n status: 'active',\n avatar: null,\n created: '2024-01-05',\n permissions: ['Self-Service', 'Knowledge Base']\n },\n {\n id: 6,\n username: 'auditor1',\n email: 'auditor1@company.com',\n name: 'Audit Specialist',\n role: 'AUDITOR',\n department: 'Compliance',\n lastLogin: '2024-01-14 14:20',\n status: 'active',\n avatar: null,\n created: '2024-01-06',\n permissions: ['Audit', 'Compliance', 'Reporting']\n }\n];\n\nconst UserManagement: React.FC = () => {\n const { user: currentUser } = useAuth();\n const [users, setUsers] = useState(mockUsers);\n const [searchTerm, setSearchTerm] = useState('');\n const [roleFilter, setRoleFilter] = useState('All');\n const [statusFilter, setStatusFilter] = useState('All');\n const [selectedUser, setSelectedUser] = useState<any>(null);\n const [userDialogOpen, setUserDialogOpen] = useState<boolean>(false);\n const [tabValue, setTabValue] = useState<number>(0);\n const [newUser, setNewUser] = useState({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n\n const columns = [\n { field: 'id', headerName: 'ID', width: 80 },\n {\n field: 'avatar',\n headerName: 'Avatar',\n width: 80,\n renderCell: (params: any) => (\n <Avatar sx={{ width: 32, height: 32, bgcolor: 'primary.main' }}>\n {params.row.name.charAt(0)}\n </Avatar>\n ),\n },\n { field: 'name', headerName: 'Name', width: 200 },\n { field: 'username', headerName: 'Username', width: 150 },\n { field: 'email', headerName: 'Email', width: 250 },\n {\n field: 'role',\n headerName: 'Role',\n width: 120,\n renderCell: (params: any) => (\n <Chip\n label={ROLES[params.row.role as keyof typeof ROLES]?.name || params.row.role}\n size=\"small\"\n sx={{\n bgcolor: ROLES[params.row.role as keyof typeof ROLES]?.color || 'default',\n color: 'white'\n }}\n />\n ),\n },\n { field: 'department', headerName: 'Department', width: 150 },\n {\n field: 'status',\n headerName: 'Status',\n width: 100,\n renderCell: (params: any) => (\n <Chip\n label={params.row.status}\n size=\"small\"\n color={params.row.status === 'active' ? 'success' : 'error'}\n />\n ),\n },\n { field: 'lastLogin', headerName: 'Last Login', width: 150 },\n {\n field: 'actions',\n headerName: 'Actions',\n width: 120,\n renderCell: (params: any) => (\n <Box>\n <IconButton size=\"small\" onClick={() => handleEditUser(params.row)}>\n <Edit />\n </IconButton>\n <IconButton size=\"small\" onClick={() => handleDeleteUser(params.row.id)}>\n <Delete />\n </IconButton>\n </Box>\n ),\n },\n ];\n\n const handleEditUser = (user: any) => {\n setSelectedUser(user);\n setNewUser(user);\n setUserDialogOpen(true);\n };\n\n const handleDeleteUser = (userId: any) => {\n if (window.confirm('Are you sure you want to delete this user?')) {\n setUsers(users.filter(u => u.id !== userId));\n }\n };\n\n const handleCreateUser = () => {\n setSelectedUser(null);\n setNewUser({\n username: '',\n email: '',\n name: '',\n role: 'END_USER',\n department: '',\n status: 'active'\n });\n setUserDialogOpen(true);\n };\n\n const handleSaveUser = () => {\n if (selectedUser) {\n // Update existing user\n setUsers(users.map(u => u.id === selectedUser.id ? { \n ...u,\n ...newUser, \n id: selectedUser.id \n } : u));\n } else {\n // Create new user\n const newId = Math.max(...users.map(u => u.id)) + 1;\n setUsers([...users, { \n ...newUser, \n id: newId, \n lastLogin: 'Never',\n avatar: null,\n created: new Date().toISOString().split('T')[0],\n permissions: ROLES[newUser.role as keyof typeof ROLES]?.permissions || []\n }]);\n }\n setUserDialogOpen(false);\n };\n\n const getRoleStats = () => {\n const stats: { [key: string]: number } = {};\n Object.keys(ROLES).forEach(role => {\n stats[role] = users.filter(u => u.role === role).length;\n });\n return stats;\n };\n\n const filteredUsers = users.filter(user => {\n const matchesSearch = user.name.toLowerCase().includes(searchTerm.toLowerCase()) ||\n user.username.toLowerCase().includes(searchTerm.toLowerCase()) ||\n user.email.toLowerCase().includes(searchTerm.toLowerCase());\n const matchesRole = roleFilter === 'All' || user.role === roleFilter;\n const matchesStatus = statusFilter === 'All' || user.status === statusFilter;\n return matchesSearch && matchesRole && matchesStatus;\n });\n\n const roleStats = getRoleStats();\n\n return (\n <Box>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }}>\n <Typography variant=\"h4\" gutterBottom>\n User Management\n </Typography>\n <Button\n variant=\"contained\"\n startIcon={<Add />}\n onClick={handleCreateUser}\n >\n Add User\n </Button>\n </Box>\n\n {/* Role Statistics */}\n <Grid container spacing={3} sx={{ mb: 3 }}>\n {Object.entries(roleStats).map(([role, count]) => (\n <Grid item xs={12} sm={6} md={2.4} key={role}>\n <Card>\n <CardContent sx={{ textAlign: 'center' }}>\n <Typography variant=\"h4\" sx={{ color: ROLES[role as keyof typeof ROLES]?.color }}>\n {count as number}\n </Typography>\n <Typography variant=\"body2\" color=\"text.secondary\">\n {ROLES[role as keyof typeof ROLES]?.name}\n </Typography>\n </CardContent>\n </Card>\n </Grid>\n ))}\n </Grid>\n\n {/* Filters */}\n <Paper sx={{ p: 2, mb: 3 }}>\n <Grid container spacing={2} alignItems=\"center\">\n <Grid item xs={12} md={4}>\n <TextField\n fullWidth\n placeholder=\"Search users...\"\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <Search />\n </InputAdornment>\n ),\n }}\n />\n </Grid>\n <Grid item xs={12} md={3}>\n <FormControl fullWidth>\n <InputLabel>Role</InputLabel>\n <Select\n value={roleFilter}\n label=\"Role\"\n onChange={(e) => setRoleFilter(e.target.value)}\n >\n <MenuItem value=\"All\">All Roles</MenuItem>\n {Object.entries(ROLES).map(([key, role]) => (\n <MenuItem key={key} value={key}>{role.name}</MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={3}>\n <FormControl fullWidth>\n <InputLabel>Status</InputLabel>\n <Select\n value={statusFilter}\n label=\"Status\"\n onChange={(e) => setStatusFilter(e.target.value)}\n >\n <MenuItem value=\"All\">All Status</MenuItem>\n <MenuItem value=\"active\">Active</MenuItem>\n <MenuItem value=\"inactive\">Inactive</MenuItem>\n </Select>\n </FormControl>\n </Grid>\n </Grid>\n </Paper>\n\n {/* Users Table */}\n <Paper sx={{ p: 2 }}>\n <DataGrid\n rows={filteredUsers}\n columns={columns}\n pageSize={10}\n rowsPerPageOptions={[10, 25, 50]}\n checkboxSelection\n disableSelectionOnClick\n sx={{ height: 400 }}\n />\n </Paper>\n\n {/* User Dialog */}\n <Dialog open={userDialogOpen} onClose={() => setUserDialogOpen(false)} maxWidth=\"md\" fullWidth>\n <DialogTitle>\n {selectedUser ? 'Edit User' : 'Create New User'}\n </DialogTitle>\n <DialogContent>\n <Grid container spacing={2} sx={{ mt: 1 }}>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Username\"\n value={newUser.username}\n onChange={(e) => setNewUser(prev => ({ ...prev, username: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Email\"\n type=\"email\"\n value={newUser.email}\n onChange={(e) => setNewUser(prev => ({ ...prev, email: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Full Name\"\n value={newUser.name}\n onChange={(e) => setNewUser(prev => ({ ...prev, name: e.target.value }))}\n required\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <TextField\n fullWidth\n label=\"Department\"\n value={newUser.department}\n onChange={(e) => setNewUser(prev => ({ ...prev, department: e.target.value }))}\n />\n </Grid>\n <Grid item xs={12} md={6}>\n <FormControl fullWidth required>\n <InputLabel>Role</InputLabel>\n <Select\n value={newUser.role}\n label=\"Role\"\n onChange={(e) => setNewUser(prev => ({ ...prev, role: e.target.value }))}\n >\n {Object.entries(ROLES).map(([key, role]) => (\n <MenuItem key={key} value={key}>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Box\n sx={{\n width: 12,\n height: 12,\n borderRadius: '50%',\n bgcolor: role.color,\n mr: 1,\n }}\n />\n {role.name}\n </Box>\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12} md={6}>\n <FormControl fullWidth>\n <InputLabel>Status</InputLabel>\n <Select\n value={newUser.status}\n label=\"Status\"\n onChange={(e) => setNewUser(prev => ({ ...prev, status: e.target.value }))}\n >\n <MenuItem value=\"active\">Active</MenuItem>\n <MenuItem value=\"inactive\">Inactive</MenuItem>\n </Select>\n </FormControl>\n </Grid>\n <Grid item xs={12}>\n <Alert severity=\"info\">\n <Typography variant=\"subtitle2\">Role Permissions:</Typography>\n <Typography variant=\"body2\">\n {ROLES[newUser.role as keyof typeof ROLES]?.permissions.join(', ') || 'No permissions'}\n </Typography>\n </Alert>\n </Grid>\n </Grid>\n </DialogContent>\n <DialogActions>\n <Button onClick={() => setUserDialogOpen(false)}>Cancel</Button>\n <Button variant=\"contained\" onClick={handleSaveUser}>\n {selectedUser ? 'Update' : 'Create'}\n </Button>\n </DialogActions>\n </Dialog>\n </Box>\n );\n}\n\nexport default UserManagement;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |