Botón firma en tabla de usuarios (verde si ya tiene, gris si no). Modal con canvas para dibujar o subir imagen, vista previa de firma actual y opción de eliminar. APIs get/save_firma_usuario.php para admins. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
1012 B
PHP
29 lines
1012 B
PHP
<?php
|
|
/**
|
|
* POST — Admin guarda/borra la firma pre-configurada de cualquier usuario.
|
|
* Body JSON: { user_id: 5, firma_svg: "data:image/png;base64,..." }
|
|
* { user_id: 5, _borrar: true }
|
|
*/
|
|
require_once __DIR__ . '/_helpers.php';
|
|
requireAdmin();
|
|
|
|
$body = json_decode(file_get_contents('php://input'), true) ?? [];
|
|
$userId = (int)($body['user_id'] ?? 0);
|
|
if ($userId <= 0) jsonError('user_id requerido.');
|
|
|
|
$db = Database::getInstance()->getConnection();
|
|
|
|
if (!empty($body['_borrar'])) {
|
|
$db->prepare("UPDATE admin_users SET firma_svg = NULL WHERE id = ?")->execute([$userId]);
|
|
jsonOk(['mensaje' => 'Firma eliminada.']);
|
|
}
|
|
|
|
$svg = $body['firma_svg'] ?? '';
|
|
if (strlen($svg) < 100) jsonError('Firma requerida.');
|
|
if (!preg_match('/^data:image\/(svg\+xml|png|jpeg|webp);base64,/i', $svg)) {
|
|
jsonError('Formato de firma no válido.');
|
|
}
|
|
|
|
$db->prepare("UPDATE admin_users SET firma_svg = ? WHERE id = ?")->execute([$svg, $userId]);
|
|
jsonOk(['mensaje' => 'Firma guardada correctamente.']);
|