feat: UI no-admin (vistas mis/asignados/sin-asignar, config solo admin)

This commit is contained in:
Nurfog committed 2026-09-10 14:57:12 -03:00
1 parent 3a1fee74e7
commit a68999eca7
6 files changed
+124 -13

No files matched your search

@@ -8,9 +8,11 @@ import {
deleteGroup,
type Group,
} from "@/lib/api";
import { useAuth } from "@/lib/auth";
import Modal from "@/components/Modal";
export default function DepartmentsPage() {
const { user, isLoading: authLoading } = useAuth();
const [groups, setGroups] = useState<Group[]>([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState("");
@@ -36,8 +38,13 @@ export default function DepartmentsPage() {
}, []);
useEffect(() => {
if (authLoading) return;
if (user?.role !== "admin") {
setLoading(false);
return;
}
fetchGroups();
}, [fetchGroups]);
}, [fetchGroups, authLoading, user?.role]);
const openCreate = () => {
setEditing(null);
@@ -94,6 +101,20 @@ export default function DepartmentsPage() {
}
};
if (!authLoading && user?.role !== "admin") {
return (
<div>
<div className="page-header">
<h1>Departamentos</h1>
</div>
<div className="alert alert-warning" role="alert">
<i className="bi bi-shield-lock me-2"></i>
Solo los administradores pueden gestionar departamentos.
</div>
</div>
);
}
return (
<div>
<div className="page-header">
+22 -1
View File
@@ -7,9 +7,11 @@ import {
updateSla,
type SLAPolicy,
} from "@/lib/api";
import { useAuth } from "@/lib/auth";
import Modal from "@/components/Modal";
export default function SlaPage() {
const { user, isLoading: authLoading } = useAuth();
const [policies, setPolicies] = useState<SLAPolicy[]>([]);
const [loading, setLoading] = useState(true);
const [error, setError] = useState("");
@@ -37,8 +39,13 @@ export default function SlaPage() {
}, []);
useEffect(() => {
if (authLoading) return;
if (user?.role !== "admin") {
setLoading(false);
return;
}
fetchPolicies();
}, [fetchPolicies]);
}, [fetchPolicies, authLoading, user?.role]);
const openCreate = () => {
setEditing(null);
@@ -101,6 +108,20 @@ export default function SlaPage() {
}
};
if (!authLoading && user?.role !== "admin") {
return (
<div>
<div className="page-header">
<h1>Políticas SLA</h1>
</div>
<div className="alert alert-warning" role="alert">
<i className="bi bi-shield-lock me-2"></i>
Solo los administradores pueden gestionar las políticas SLA.
</div>
</div>
);
}
return (
<div>
<div className="page-header">
+22 -1
View File
@@ -9,9 +9,11 @@ import {
type TeamMember,
type Group,
} from "@/lib/api";
import { useAuth } from "@/lib/auth";
import Modal from "@/components/Modal";
export default function TeamPage() {
const { user, isLoading: authLoading } = useAuth();
const [team, setTeam] = useState<TeamMember[]>([]);
const [groups, setGroups] = useState<Group[]>([]);
const [loading, setLoading] = useState(true);
@@ -41,8 +43,13 @@ export default function TeamPage() {
}, []);
useEffect(() => {
if (authLoading) return;
if (user?.role !== "admin") {
setLoading(false);
return;
}
fetchData();
}, [fetchData]);
}, [fetchData, authLoading, user?.role]);
const openCreate = () => {
setEditing(null);
@@ -97,6 +104,20 @@ export default function TeamPage() {
}
};
if (!authLoading && user?.role !== "admin") {
return (
<div>
<div className="page-header">
<h1>Equipo de Soporte</h1>
</div>
<div className="alert alert-warning" role="alert">
<i className="bi bi-shield-lock me-2"></i>
Solo los administradores pueden gestionar el equipo.
</div>
</div>
);
}
return (
<div>
<div className="page-header">