Jump to content

(SOLUCIONADO) Mostrar productos BO solo al usuario que lo creo


bsldiego

Recommended Posts

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. 

ejemplo.JPG

Edited by bsldiego (see edit history)
Link to comment
Share on other sites

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

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

  • 2 weeks later...
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.

  • Thanks 1
Link to comment
Share on other sites

  • 5 months later...
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 w3bsolutionsMe 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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...