fix(clinics): adiciona campo senha no formulário de cadastro de clínica
continuous-integration/webhook Deploy concluído (VPS4)

- Form não enviava password → servidor retornava 400 em todo cadastro
- Adicionado input password no modal de cadastro
- pc_name tornado opcional no servidor (já era opcional no UI)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Deploy Agent
2026-05-31 01:30:52 +02:00
parent 7fec895778
commit 22be2adefd
2 changed files with 4 additions and 3 deletions
@@ -16,7 +16,7 @@ export default function AdminClinicsPage() {
const [showAddModal, setShowAddModal] = useState(false);
const [showTokenModal, setShowTokenModal] = useState(false);
const [generatedToken, setGeneratedToken] = useState('');
const [form, setForm] = useState({ clinic_name: '', pc_name: '', email: '' });
const [form, setForm] = useState({ clinic_name: '', pc_name: '', email: '', password: '' });
const [saving, setSaving] = useState(false);
const [showSettings, setShowSettings] = useState(false);
const [showUsers, setShowUsers] = useState(false);
@@ -46,7 +46,7 @@ export default function AdminClinicsPage() {
const { data } = await api.post('/admin/clinics', form);
if (data.success) {
setShowAddModal(false);
setForm({ clinic_name: '', pc_name: '', email: '' });
setForm({ clinic_name: '', pc_name: '', email: '', password: '' });
setGeneratedToken(data.machine_token);
setShowTokenModal(true);
loadClinics();
@@ -203,6 +203,7 @@ export default function AdminClinicsPage() {
<div className="form-group"><label>Nome da Clínica *</label><input type="text" required value={form.clinic_name} onChange={set('clinic_name')} placeholder="Ex: Clínica Odonto" /></div>
<div className="form-group"><label>Nome do PC</label><input type="text" value={form.pc_name} onChange={set('pc_name')} placeholder="Ex: DESKTOP-RECEPCAO" /></div>
<div className="form-group"><label>E-mail de Contato *</label><input type="email" required value={form.email} onChange={set('email')} placeholder="contato@clinica.com" /></div>
<div className="form-group"><label>Senha de Acesso *</label><input type="password" required value={form.password} onChange={set('password')} placeholder="Senha para o cliente Windows" /></div>
<div className="form-actions">
<button type="button" className="btn btn-secondary" onClick={() => setShowAddModal(false)}>Cancelar</button>
<button type="submit" className="btn btn-primary" disabled={saving}>{saving ? 'Salvando...' : 'Salvar e Gerar Token'}</button>
+1 -1
View File
@@ -37,7 +37,7 @@ router.get('/', requireAdmin, async (req, res) => {
router.post('/', requireAdmin, async (req, res) => {
const { clinic_name, email, password, pc_name } = req.body;
if (!clinic_name || !email || !password || !pc_name) {
if (!clinic_name || !email || !password) {
return res.status(400).json({ success: false, message: 'Preencha todos os campos obrigatórios' });
}