feat: implement user management dashboard and visibility access controls
continuous-integration/webhook Deploy concluido (rx.scoreodonto.com)

This commit is contained in:
VPS 4 Builder
2026-05-26 20:45:00 +02:00
parent 9e8d920b75
commit da40ab11f6
4 changed files with 233 additions and 3 deletions
+56
View File
@@ -92,6 +92,9 @@
<button class="btn btn-primary" onclick="openCreatePatientModal()" style="padding: 10px 16px; border-radius: 10px; font-weight: 600; font-size: 0.95rem; background: var(--primary-color); color: white; border: none; cursor: pointer; display: flex; align-items: center; gap: 6px; box-shadow: 0 4px 10px rgba(79, 70, 229, 0.2);">
Novo Paciente
</button>
<button id="btnUserManagement" class="btn btn-secondary" onclick="openUserManagementModal()" title="Gerenciar Usuários" style="display: none; padding: 10px 16px; border-radius: 10px; font-weight: 500; font-size: 0.95rem; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-primary); cursor: pointer; align-items: center; gap: 6px;">
👥 Gerenciar Usuários
</button>
<button class="btn btn-secondary" onclick="openSettingsModal()" title="Configurações" style="padding: 10px 16px; border-radius: 10px; font-weight: 500; font-size: 0.95rem; border: 1px solid var(--border-color); background: var(--bg-surface); color: var(--text-primary); cursor: pointer; display: flex; align-items: center; gap: 6px;">
⚙️ Configurações
</button>
@@ -322,6 +325,59 @@
</div>
</div>
<!-- User Management Modal (Admin Only) -->
<div id="userManagementModal" class="modal">
<div class="modal-content modal-large" style="max-width: 800px; background: var(--bg-surface); border-radius: 12px; box-shadow: var(--shadow-lg); padding: 32px;">
<div class="modal-header" style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; border-bottom: 1px solid var(--border-color); padding-bottom: 12px;">
<h2 style="font-family: var(--font-heading); color: var(--text-primary); font-size: 1.6rem; font-weight: 600;">👥 Gerenciamento de Usuários</h2>
<span class="close-modal" onclick="closeUserManagementModal()" style="font-size: 2rem; cursor: pointer; color: var(--text-secondary);">&times;</span>
</div>
<div class="modal-body" style="display: flex; gap: 32px; flex-direction: row; flex-wrap: wrap;">
<!-- Formulário de Cadastro (Esquerda) -->
<div style="flex: 1; min-width: 280px; background: rgba(0,0,0,0.02); padding: 24px; border-radius: 12px; border: 1px solid var(--border-color);">
<h3 style="margin-bottom: 20px; font-family: var(--font-heading); color: var(--text-primary); font-size: 1.25rem;">Cadastrar Novo Usuário</h3>
<form id="createUserForm" onsubmit="createUser(event)">
<div class="form-group" style="margin-bottom: 16px;">
<label style="display:block; margin-bottom:6px; font-weight:600; color:var(--text-primary);">Nome de Usuário *</label>
<input type="text" id="new_username" required placeholder="Ex: dentista.ana" style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 8px; outline:none; background:var(--bg-color); color:var(--text-primary);">
</div>
<div class="form-group" style="margin-bottom: 16px;">
<label style="display:block; margin-bottom:6px; font-weight:600; color:var(--text-primary);">E-mail *</label>
<input type="email" id="new_email" required placeholder="ana@consultorio.com" style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 8px; outline:none; background:var(--bg-color); color:var(--text-primary);">
</div>
<div class="form-group" style="margin-bottom: 16px;">
<label style="display:block; margin-bottom:6px; font-weight:600; color:var(--text-primary);">Senha *</label>
<input type="password" id="new_password" required placeholder="Senha de acesso" style="width: 100%; padding: 12px; border: 1px solid var(--border-color); border-radius: 8px; outline:none; background:var(--bg-color); color:var(--text-primary);">
</div>
<button type="submit" class="btn btn-primary" style="width: 100%; margin-top: 12px; padding: 12px; border-radius: 8px; font-weight: 600; background:var(--primary-color); color:white; border:none; cursor:pointer;">
Cadastrar Usuário
</button>
</form>
</div>
<!-- Lista de Usuários (Direita) -->
<div style="flex: 1.5; min-width: 320px; display:flex; flex-direction:column;">
<h3 style="margin-bottom: 20px; font-family: var(--font-heading); color: var(--text-primary); font-size: 1.25rem;">Usuários Cadastrados</h3>
<div style="max-height: 320px; overflow-y: auto; border: 1px solid var(--border-color); border-radius: 12px; background:var(--bg-surface);">
<table style="width: 100%; border-collapse: collapse; font-size: 0.95rem; text-align: left;">
<thead>
<tr style="background: rgba(0,0,0,0.03); border-bottom: 1px solid var(--border-color); color:var(--text-primary); font-weight:600;">
<th style="padding: 14px 16px;">Usuário</th>
<th style="padding: 14px 16px;">E-mail</th>
<th style="padding: 14px 16px;">Função</th>
<th style="padding: 14px 16px; text-align: center;">Ações</th>
</tr>
</thead>
<tbody id="usersListBody">
<!-- Preenchido via JS -->
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!-- Plugins / Wasabi Modal -->
<div id="pluginsModal" class="modal">
<div class="modal-content">