bsldiego Posted November 19, 2017 Share Posted November 19, 2017 (edited) Hola, necesito mostrar los productos en el backoffice solo al empleado que creo el producto, para ello he creado un nuevo campo en cada producto que se llama empleado y se auto asigna con el nombre del empleado activo. Ahora lo que necesito es filtrar desde la lista de productos para que si este usuario no es administrador, solo pueda ver y modificar los productos que el haya creado (osea todos los productos que tengan en el campo personalizado $empleado == al nombre del empleado actual). El empleado no debe ser capaz de ver productos de otros, solo los que el ha ingresado. Les agradezco toda la ayuda. Saludos. Edited May 11, 2018 by bsldiego (see edit history) Link to comment Share on other sites More sharing options...
w3bsolutions Posted November 20, 2017 Share Posted November 20, 2017 Esto lo puedes conseguir fácilmente creando un override del método getList del controlador AdminProductsController. Recorres los productos y si no es usuario administrador el que está iniciado sesión y su nombre no coincide con el del campo empleado del producto, lo eliminas de la lista. Algunos apuntes: - También tendrás que sobreescribir el método del controlador del Buscador del backoffice, ya que también busca en los productos. Si no filtras ahí también los productos, un empleado podrá editar los productos de otros. - Es mucho mejor usar el ID del empleado en lugar del nombre del empleado. Si luego cambias el nombre de un empleado - a no ser que actualices el campo en todos sus productos, que requiría más operaciones - ya no te serviría la lógica. Solo los admins podrían ver los productos de ese empleado ya que el nombre en los productos ya no coincide con el de ningún empleado. Saludos. Link to comment Share on other sites More sharing options...
bsldiego Posted November 20, 2017 Author Share Posted November 20, 2017 Hola w3bsolutions, Muchisimas gracias por responder, aprecio su apoyo. Comprendo la lógica de lo que me dices, también conozco la estructura de prestashop.. pero no se como armar mi sentencia de control en el AdminProductsController.. puedes darme una manita.. muchas gracias. Link to comment Share on other sites More sharing options...
w3bsolutions Posted December 5, 2017 Share Posted December 5, 2017 On 11/20/2017 at 3:58 PM, bsldiego said: Hola w3bsolutions, Muchisimas gracias por responder, aprecio su apoyo. Comprendo la lógica de lo que me dices, también conozco la estructura de prestashop.. pero no se como armar mi sentencia de control en el AdminProductsController.. puedes darme una manita.. muchas gracias. Si lo único que quieres es filtrar el listado de productos en el admin (sin tener en cuenta el buscador del panel de control) es incluso más sencillo. Este override en /override/controllers/admin/ debería funcionar: class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); if (!$this->context->employee->isSuperAdmin()) { $this->_where .= ' AND a.`empleado` = "'.$this->context->employee->firstname.'" '; } } } Cambia "empleado" por como hayas llamado ese campo. Confirma si te funciona. Saludos. 1 Link to comment Share on other sites More sharing options...
bsldiego Posted May 8, 2018 Author Share Posted May 8, 2018 On 5/12/2017 at 6:16 AM, w3bsolutions said: Si lo único que quieres es filtrar el listado de productos en el admin (sin tener en cuenta el buscador del panel de control) es incluso más sencillo. Este override en /override/controllers/admin/ debería funcionar: class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); if (!$this->context->employee->isSuperAdmin()) { $this->_where .= ' AND a.`empleado` = "'.$this->context->employee->firstname.'" '; } } } Cambia "empleado" por como hayas llamado ese campo. Confirma si te funciona. Saludos. Hola w3bsolutions, Me ha funcionado de maravilla muchas gracias. Ahora estoy tratando algo mejor aun, he asignado a distintos usuarios algunas categorías, por ejemplo un usuario de nombre xyz tiene a su encargo la categoría abc y la subcategoria xxx, debo mostrarle solo los productos de esa categoría o los que el haya creado. Me echas una mano. También necesito aplicar esto a los filtros de busqueda. Muchas gracias por su valiosa ayuda. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now