From 72775500dad54ea5cf636148e5fc9599fcc51c76 Mon Sep 17 00:00:00 2001 From: Nurfog Date: Thu, 10 Sep 2026 11:36:46 -0300 Subject: [PATCH] Auth: idUsuario login via sige_sam_v3.usuario - Login uses idUsuario + password (plain text or SHA256) - API types: HelpDeskUser with idUsuario, nombres, apPaterno - Sidebar/layout: fullName from nombres + apPaterno - pnpm-workspace.yaml: approve unrs-resolver builds --- frontend/pnpm-lock.yaml | 10 +++++++++ frontend/pnpm-workspace.yaml | 2 ++ frontend/src/app/(app)/layout.tsx | 5 +++-- frontend/src/app/(auth)/login/page.tsx | 12 +++++------ frontend/src/components/Sidebar.tsx | 7 ++++--- frontend/src/lib/api.ts | 28 +++++++++++++------------- frontend/src/lib/auth.tsx | 12 +++++------ 7 files changed, 45 insertions(+), 31 deletions(-) create mode 100644 frontend/pnpm-workspace.yaml diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 0682d9b..b8d274a 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -138,6 +138,9 @@ packages: '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.3': + resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -2275,6 +2278,11 @@ snapshots: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.3': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -2436,6 +2444,8 @@ snapshots: optional: true '@img/sharp-wasm32@0.35.4': + dependencies: + '@emnapi/runtime': 1.11.3 optional: true '@img/sharp-webcontainers-wasm32@0.35.4': diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml new file mode 100644 index 0000000..6c750ff --- /dev/null +++ b/frontend/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +allowBuilds: + unrs-resolver: true diff --git a/frontend/src/app/(app)/layout.tsx b/frontend/src/app/(app)/layout.tsx index 8ab2995..8ba5c33 100644 --- a/frontend/src/app/(app)/layout.tsx +++ b/frontend/src/app/(app)/layout.tsx @@ -79,7 +79,8 @@ function AppShell({ children }: { children: React.ReactNode }) { function TopNavbarUser() { const { user } = useAuth(); - const initials = user?.nombre + const fullName = user ? `${user.nombres} ${user.apPaterno}` : "Usuario"; + const initials = user?.nombres ?.split(" ") .map((n: string) => n[0]) .join("") @@ -90,7 +91,7 @@ function TopNavbarUser() {
{initials}
- {user?.nombre || "Usuario"} + {fullName}
); diff --git a/frontend/src/app/(auth)/login/page.tsx b/frontend/src/app/(auth)/login/page.tsx index 1c77cd0..980cf8f 100644 --- a/frontend/src/app/(auth)/login/page.tsx +++ b/frontend/src/app/(auth)/login/page.tsx @@ -5,7 +5,7 @@ import { useRouter } from "next/navigation"; import { useAuth } from "@/lib/auth"; export default function LoginPage() { - const [rut, setRut] = useState(""); + const [idUsuario, setIdUsuario] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); @@ -17,7 +17,7 @@ export default function LoginPage() { setError(""); setLoading(true); try { - await login(rut, password); + await login(idUsuario, password); router.push("/"); } catch (err: any) { setError(err.message || "Credenciales inválidas"); @@ -74,13 +74,13 @@ export default function LoginPage() {
- + setRut(e.target.value)} + placeholder="Tu ID de usuario" + value={idUsuario} + onChange={(e) => setIdUsuario(e.target.value)} required autoFocus /> diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx index dcde24c..c794026 100644 --- a/frontend/src/components/Sidebar.tsx +++ b/frontend/src/components/Sidebar.tsx @@ -14,7 +14,8 @@ export default function Sidebar() { { href: "/knowledge-base", icon: "bi-journal-bookmark", label: "Knowledge Base" }, ]; - const initials = user?.nombre + const fullName = user ? `${user.nombres} ${user.apPaterno}` : "Usuario"; + const initials = user?.nombres ?.split(" ") .map((n: string) => n[0]) .join("") @@ -49,8 +50,8 @@ export default function Sidebar() {
{initials}
-
{user?.nombre || "Usuario"}
-
{user?.perfil || "Agente"}
+
{fullName}
+
{user?.tipo || "Usuario"}