125 lines
3.7 KiB
Plaintext
125 lines
3.7 KiB
Plaintext
<div class="sidebar">
|
|
|
|
<!-- ✅ Logo + Sprachbuttons -->
|
|
<div style="display:flex; align-items:center; justify-content:space-between; margin-bottom:30px;">
|
|
<div class="logo" style="margin:0;">
|
|
🩺 Praxis System
|
|
</div>
|
|
|
|
<!-- ✅ Sprache oben rechts -->
|
|
<div style="display:flex; gap:6px;">
|
|
<a
|
|
href="/lang/de"
|
|
class="btn btn-sm btn-outline-light <%= lang === 'de' ? 'active' : '' %>"
|
|
style="padding:2px 8px; font-size:12px;"
|
|
title="Deutsch"
|
|
>
|
|
DE
|
|
</a>
|
|
|
|
<a
|
|
href="/lang/es"
|
|
class="btn btn-sm btn-outline-light <%= lang === 'es' ? 'active' : '' %>"
|
|
style="padding:2px 8px; font-size:12px;"
|
|
title="Español"
|
|
>
|
|
ES
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<%
|
|
const role = user?.role || null;
|
|
|
|
// ✅ Regeln:
|
|
// Arztbereich: NUR arzt
|
|
const canDoctorArea = role === "arzt";
|
|
|
|
// Verwaltung: NUR admin
|
|
const canAdminArea = role === "admin";
|
|
|
|
function hrefIfAllowed(allowed, href) {
|
|
return allowed ? href : "#";
|
|
}
|
|
|
|
function lockClass(allowed) {
|
|
return allowed ? "" : "locked";
|
|
}
|
|
|
|
function lockClick(allowed) {
|
|
return allowed ? "" : 'onclick="return false;"';
|
|
}
|
|
%>
|
|
|
|
<!-- Patienten -->
|
|
<a
|
|
href="<%= hrefIfAllowed(canDoctorArea, '/patients') %>"
|
|
class="nav-item <%= active === 'patients' ? 'active' : '' %> <%= lockClass(canDoctorArea) %>"
|
|
<%- lockClick(canDoctorArea) %>
|
|
title="<%= canDoctorArea ? '' : 'Nur Arzt' %>"
|
|
>
|
|
<i class="bi bi-people"></i> <%= t.sidebar.patients %>
|
|
<% if (!canDoctorArea) { %>
|
|
<span style="margin-left:auto;"><i class="bi bi-lock-fill"></i></span>
|
|
<% } %>
|
|
</a>
|
|
|
|
<!-- Medikamente -->
|
|
<a
|
|
href="<%= hrefIfAllowed(canDoctorArea, '/medications') %>"
|
|
class="nav-item <%= active === 'medications' ? 'active' : '' %> <%= lockClass(canDoctorArea) %>"
|
|
<%- lockClick(canDoctorArea) %>
|
|
title="<%= canDoctorArea ? '' : 'Nur Arzt' %>"
|
|
>
|
|
<i class="bi bi-capsule"></i> <%= t.sidebar.medications %>
|
|
<% if (!canDoctorArea) { %>
|
|
<span style="margin-left:auto;"><i class="bi bi-lock-fill"></i></span>
|
|
<% } %>
|
|
</a>
|
|
|
|
<!-- Offene Leistungen -->
|
|
<a
|
|
href="<%= hrefIfAllowed(canDoctorArea, '/services/open') %>"
|
|
class="nav-item <%= active === 'services' ? 'active' : '' %> <%= lockClass(canDoctorArea) %>"
|
|
<%- lockClick(canDoctorArea) %>
|
|
title="<%= canDoctorArea ? '' : 'Nur Arzt' %>"
|
|
>
|
|
<i class="bi bi-receipt"></i> <%= t.sidebar.servicesOpen %>
|
|
<% if (!canDoctorArea) { %>
|
|
<span style="margin-left:auto;"><i class="bi bi-lock-fill"></i></span>
|
|
<% } %>
|
|
</a>
|
|
|
|
<!-- Abrechnung -->
|
|
<a
|
|
href="<%= hrefIfAllowed(canDoctorArea, '/admin/invoices') %>"
|
|
class="nav-item <%= active === 'billing' ? 'active' : '' %> <%= lockClass(canDoctorArea) %>"
|
|
<%- lockClick(canDoctorArea) %>
|
|
title="<%= canDoctorArea ? '' : 'Nur Arzt' %>"
|
|
>
|
|
<i class="bi bi-cash-coin"></i> <%= t.sidebar.billing %>
|
|
<% if (!canDoctorArea) { %>
|
|
<span style="margin-left:auto;"><i class="bi bi-lock-fill"></i></span>
|
|
<% } %>
|
|
</a>
|
|
|
|
<!-- Verwaltung (nur Admin) -->
|
|
<a
|
|
href="<%= hrefIfAllowed(canAdminArea, '/admin/users') %>"
|
|
class="nav-item <%= active === 'admin' ? 'active' : '' %> <%= lockClass(canAdminArea) %>"
|
|
<%- lockClick(canAdminArea) %>
|
|
title="<%= canAdminArea ? '' : 'Nur Admin' %>"
|
|
>
|
|
<i class="bi bi-gear"></i> <%= t.sidebar.admin %>
|
|
<% if (!canAdminArea) { %>
|
|
<span style="margin-left:auto;"><i class="bi bi-lock-fill"></i></span>
|
|
<% } %>
|
|
</a>
|
|
|
|
<div class="spacer"></div>
|
|
|
|
<a href="/logout" class="nav-item">
|
|
<i class="bi bi-box-arrow-right"></i> Logout
|
|
</a>
|
|
</div>
|