Repository navigation
Agrupa las pestañas de la ficha del proyecto y revisa la seguridad de sus acciones - #55
Open
abdedarghal111 wants to merge 16 commits into
Open
abdedarghal111 wants to merge 16 commits into
abdedarghal111 wants to merge 16 commits into
Conversation
…aseWhere Atención: cambio a revisar y probar con cuidado. autocompleteAction() era una copia completa del método de BaseController para añadir la búsqueda por numproveedor/numero2 al vincular documentos. Ahora sigue el mismo patrón que Modelo303 y Servicios: solo trata el campo linkupcode y para todo lo demás delega en parent::autocompleteAction(). Se elimina lo que en este caso no tenía efecto: - el bucle de fieldfilter con DataBaseWhere::applyOperation(), ya que ningún widget linkupcode define fieldfilter. DataBaseWhere está obsoleta y no tiene sustituto en Where (Where::parseFieldFilter() se añadió y se revirtió en el core el 13/05/2026). - la rama de source vacío, que ahora resuelve el parent. - la rama de strict, porque ningún widget lo cambia y por defecto es true. Probar los 9 modales de vincular documento (cliente, proveedor y asiento) y el resto de autocompletados de la ficha del proyecto.
…ones Atención: cambio de seguridad que requiere pruebas exhaustivas. - Todas las acciones propias validan allowUpdate y el token del formulario; vincular y desvincular comprueban además el permiso de modificación sobre el tipo de documento (Edit<Modelo>). - rebuild-stock no comprobaba nada: ahora exige ser administrador, permiso de modificación y token válido. - Antes de ejecutar cualquier acción se comprueba que el usuario puede ver el proyecto, porque la denegación de acceso de loadData() llega después de las acciones y permitía modificar proyectos privados ajenos. - Importar tareas exige poder ver también el proyecto de origen. - Vincular rechaza peticiones sin documento seleccionado. - Se usa la clave de traducción not-allowed-modify (not-allowed-to-update no existe) y desvincular devuelve true si falla el SQL para que la página cargue y muestre el error.
Atención: cambio de seguridad que requiere pruebas exhaustivas. - move-task valida el token del formulario además de allowUpdate. - Solo se mueven tareas de proyectos que el usuario puede ver y que son editables. - Cada respuesta devuelve un token nuevo, que el JS usa en el siguiente movimiento, ya que el core no permite reutilizar un token. - Abrir el tablero con ?idproyecto= de un proyecto privado ajeno ya no muestra sus tareas. Probar varios movimientos seguidos sin recargar, usuario sin permiso de modificación, proyecto no editable y proyecto privado ajeno por URL.
La pestaña de recibos se añadió en la PR #43 copiando createReceiptView() de ComercialContactController, pero sin la carga de datos ni la acción del botón, por lo que siempre salía vacía y "Pagado" no hacía nada. - loadData() carga los recibos de las facturas de cliente vinculadas al proyecto, igual que EditCliente con sus líneas de factura. - pay-receipt usa payReceiptAction() de ListBusinessActionTrait y exige permiso de modificación en el proyecto y en EditReciboCliente. Probar con datos reales, con y sin permiso sobre recibos, y en MySQL y PostgreSQL.
… de cliente Las tablas de documentos de cliente terminan en 'cli', no en 'clie', por lo que la búsqueda adicional por numero2 nunca se ejecutaba. Probar los cuatro modales de vincular documento de cliente.
…desvincular Atención: cambio de seguridad que requiere pruebas exhaustivas. El UPDATE solo filtraba por la clave del documento, así que desde un proyecto visible se podía quitar o mover un documento de un proyecto privado ajeno. - Desvincular solo afecta a documentos del proyecto actual. - Vincular rechaza documentos de otro proyecto que el usuario no puede ver y, si lo puede ver, recalcula también el stock y los totales del proyecto de origen.
Cache::clear() borraba también la lista de tokens usados de MultiRequestProtection, por lo que un token ya gastado volvía a ser válido. No hace falta: los gestores de stock y totales guardan con save(), que ya limpia la caché del modelo.
…el acceso El parent añade la descripción del modelo al título, por lo que la página de acceso denegado mostraba el nombre del proyecto privado.
Desvincular respondía "Registro actualizado correctamente" aunque ningún documento perteneciera al proyecto. Ahora se salta cada documento que no existe o es de otro proyecto y, si no se desvincula ninguno, se avisa con "Registro no encontrado".
…la PR #47 En la revisión de la PR #47 se pidió quitar solo apexcharts del package.json, pero se borró el fichero entero y con él sortablejs, por lo que el kanban daba 404 al cargar la librería y no se podía arrastrar. Se restaura el package.json original. Requiere instalar las dependencias del plugin (npm install o pnpm install). Probar también en táctil.
… la misma fase El orden de las tareas dentro de una fase no se guarda, así que reordenar enviaba un move-task con la misma fase sin efecto. Ahora solo se envía cuando la tarea cambia de fase.
…ficación Los usuarios sin permiso de modificación veían los botones aunque el servidor rechazaba la acción. Ahora solo se añaden con allowUpdate.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
https://facturascripts.com/roadmap/5231
Qué pasaba
Qué cambia
Fixes
Fallos de seguridad del plugin arreglados
Bugs del core
Tests