Files
2026-08-10 23:00:56 -03:00

95 lines
3.6 KiB
Plaintext

@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Identity
@inject SignInManager<ApplicationUser> SignInManager
@inject UserManager<ApplicationUser> UserManager
<nav class="sidebar">
<div class="sidebar-header d-flex align-items-center justify-content-between mb-4 px-3">
<a class="text-decoration-none" asp-controller="Home" asp-action="Index">
<span class="h5 fw-bold text-dark">VitaAsistente</span>
</a>
<button id="sidebarToggle" class="btn btn-sm p-0 ms-auto d-md-none" aria-label="Toggle sidebar">
<i class="bi bi-list"></i>
</button>
</div>
@if (SignInManager.IsSignedIn(User))
{
<div class="sidebar-user-info mb-4 px-3 pb-2 border-bottom d-flex align-items-center">
<div class="flex-grow-1 text-truncate">
<small class="text-muted">Hola,</small>
<span class="d-block small fw-medium" title="@User.Identity?.Name ?? "Usuario"">@User.Identity?.Name ?? "Usuario"</span>
</div>
</div>
@if (User.IsInRole("Admin"))
{
<div class="sidebar-section pb-2 px-3">
<h4 class="section-title mb-2">Administración</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link" asp-controller="Usuarios" asp-action="Index">
<span class="me-2">👥</span> Gestión de Usuarios
</a>
</li>
<li class="nav-item">
<a class="nav-link" asp-controller="Roles" asp-action="Index">
<span class="me-2">📋</span> Gestión de Roles
</a>
</li>
</ul>
</div>
}
@if (User.IsInRole("Admin") || User.IsInRole("Usuario"))
{
<div class="sidebar-section pb-2 px-3">
<h4 class="section-title mb-2">Módulos Principales</h4>
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link" asp-controller="Home" asp-action="Index">
<span class="me-2">🏠</span> Dashboard
</a>
</li>
</ul>
</div>
}
}
else
{
<div class="p-4 text-center">
<div class="mb-3">
<i class="bi bi-person-circle" style="font-size: 2.5rem;"></i>
</div>
<a href="/" class="btn btn-sm btn-outline-primary">Volver al inicio</a>
</div>
}
<form asp-controller="Account" asp-action="Logout" method="post" class="sidebar-footer p-3 border-top">
@Html.AntiForgeryToken()
@if (SignInManager.IsSignedIn(User))
{
<button type="submit" class="btn btn-sm btn-outline-danger w-100">Cerrar Sesión</button>
}
</form>
</nav>
<script>
document.addEventListener('DOMContentLoaded', function() {
const sidebar = document.querySelector('.sidebar');
const toggleButton = document.getElementById('sidebarToggle');
if (toggleButton && sidebar) {
toggleButton.addEventListener('click', function() {
sidebar.classList.toggle('collapsed');
// Update button icon based on state
const icon = toggleButton.querySelector('i');
if (sidebar.classList.contains('collapsed')) {
icon.className = 'bi bi-arrow-bar-right';
} else {
icon.className = 'bi bi-list';
}
});
}
});
</script>