import React, { useState } from 'react'; import { AppUser, ViewState } from '../types'; import { Plus, Search, Shield, ShieldAlert, CheckCircle2, XCircle, Edit2, Trash2, X, Save, User as UserIcon, Lock } from 'lucide-react'; interface UserManagementViewProps { users: AppUser[]; setUsers: (users: AppUser[]) => void; availableModules: { id: ViewState; label: string }[]; currentUser: AppUser; } const ToggleSwitch: React.FC<{ checked: boolean, onChange: (val: boolean) => void, label: string }> = ({ checked, onChange, label }) => (
{label}
); export const UserManagementView: React.FC = ({ users, setUsers, availableModules, currentUser }) => { const [isModalOpen, setIsModalOpen] = useState(false); const [editingUser, setEditingUser] = useState>({ role: 'user', active: true, permissions: [] }); const handleSaveUser = () => { if (!editingUser.name || !editingUser.email) return; if (editingUser.id) { // Editar existente setUsers(users.map(u => u.id === editingUser.id ? { ...u, ...editingUser } as AppUser : u)); } else { // Criar novo const newUser: AppUser = { ...editingUser, id: Math.random().toString(36).substr(2, 9), avatar: `https://ui-avatars.com/api/?name=${editingUser.name}&background=random`, permissions: editingUser.role === 'super_admin' ? availableModules.map(m => m.id) : (editingUser.permissions || []) } as AppUser; setUsers([...users, newUser]); } setIsModalOpen(false); setEditingUser({ role: 'user', active: true, permissions: [] }); }; const handleDeleteUser = (id: string) => { if (id === currentUser.id) { alert("Você não pode excluir a si mesmo."); return; } if (window.confirm("Tem certeza que deseja remover este usuário?")) { setUsers(users.filter(u => u.id !== id)); } }; const togglePermission = (moduleId: ViewState) => { const currentPermissions = editingUser.permissions || []; if (currentPermissions.includes(moduleId)) { setEditingUser({ ...editingUser, permissions: currentPermissions.filter(p => p !== moduleId) }); } else { setEditingUser({ ...editingUser, permissions: [...currentPermissions, moduleId] }); } }; const openModal = (user?: AppUser) => { if (user) { setEditingUser(user); } else { setEditingUser({ role: 'user', active: true, permissions: [], name: '', email: '' }); } setIsModalOpen(true); }; const inputClass = "w-full p-3 bg-slate-50 border border-slate-200 rounded-xl focus:ring-2 focus:ring-primary-200 outline-none text-slate-800 text-sm"; const labelClass = "block text-xs font-bold text-slate-700 mb-1 uppercase tracking-wide"; return (

Gerenciamento de Usuários

Controle de acesso e permissões do sistema.

{users.map(user => ( ))}
Usuário Função Status Permissões
{user.name}
{user.name}
{user.email}
{user.role === 'super_admin' ? : } {user.role === 'super_admin' ? 'Super Admin' : 'Usuário'} {user.active ? : } {user.active ? 'Ativo' : 'Inativo'} {user.role === 'super_admin' ? ( Acesso Total ) : (
{user.permissions.length === 0 && Sem acesso} {user.permissions.slice(0, 3).map(p => ( {availableModules.find(m => m.id === p)?.label || p} ))} {user.permissions.length > 3 && ( +{user.permissions.length - 3} )}
)}
{user.id !== currentUser.id && ( )}
{/* Modal User Edit/Create */} {isModalOpen && (
setIsModalOpen(false)}>

{editingUser.id ? 'Editar Usuário' : 'Novo Usuário'}

setEditingUser({...editingUser, name: e.target.value})} placeholder="Ex: João Silva" />
setEditingUser({...editingUser, email: e.target.value})} placeholder="joao@empresa.com" />
{/* Permissions Area */}

Permissões de Acesso

{editingUser.role === 'super_admin' ? (

Acesso Irrestrito

Super Admins têm acesso a todos os módulos.

) : (
{availableModules.map(module => ( togglePermission(module.id)} /> ))}
)}
)}
); };