Post by zentimus » Fri Mar 28, 2014 11:01 pm

Hola a todos
Queria saber como lo tendria que hacer para que creando un grupo de usuarios demostracion, esto tengan acceso a productos pero una vez en productos , puedan insertar ,modificar ...pero no eliminar.
Gracias un saludo

New member

Posts

Joined
Fri Feb 28, 2014 3:31 am

Post by cofran » Fri Apr 04, 2014 3:34 am

Hola,

Nativamente es imposible, opencart maneja dos grandes permisos, ver y modificar, donde dentro de modificar el usuario tiene el privilegio de insertar, actualizar y eliminar, no es posible separarlos.

Hay que modificar muchos archivos para lograr esto.

Saludos!

User avatar
Active Member

Posts

Joined
Thu Oct 01, 2009 7:37 am
Location - Córdoba, Argentina

Post by zentimus » Thu Apr 10, 2014 1:37 pm

Gracias cofran por tu respuesta
Y crear un panel control paralelo al admin
ejemplo url/admin_proveedor
en el cual los usuarios pudiesen tener sesiones propias.
No se si me explico,acceso solo a sus productos.

New member

Posts

Joined
Fri Feb 28, 2014 3:31 am

Post by cofran » Thu Apr 10, 2014 10:33 pm

No conozco el nivel de programación que tenes o si eres programador, en todo caso te puedo "guiar" como hacer para incluir un nivel más de permisos que sea justamente poder o no eliminar. Lo otro lo veo más complejo hacer un admin paralelo

Saludos!

User avatar
Active Member

Posts

Joined
Thu Oct 01, 2009 7:37 am
Location - Córdoba, Argentina

Post by zentimus » Wed Apr 16, 2014 4:13 pm

Hola Cofran
Si soy programador , pero estoy un poco verde en opencart.
Imagino que tocando alguno de los archivos de la carpeta controller , supogo user.
Cambiando algunas consultas a base de datos. pero tampoco me quiero meter muy hondo.
No tengo tiempo para profundizar.

New member

Posts

Joined
Fri Feb 28, 2014 3:31 am

Post by cofran » Tue Apr 22, 2014 4:36 am

Bueno en los controladores del admin tenes dentro de cada archivo funciones que protegen los grupos. Por ejemplo la que permite editar comienza así:

Code: Select all

	protected function validateForm() {
		if (!$this->user->hasPermission('modify', 'catalog/attribute')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}
Como verás al objeto hasPermission se le pasa el parámetro del tipo de permiso y la ruta al archivo que se esta modificando 'catalog/attribute' en este caso.

Y a la vez tenes esta otra función que empieza así:

Code: Select all

	protected function validateDelete() {
		if (!$this->user->hasPermission('modify', 'catalog/attribute')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}
Esta sirve para eliminar, pero como podrás ver, se esta basando en el mismo permiso que para modificar, que es el permiso 'modify'
Lo que deberías de hacer es cambiar todos estos permisos de la función validateDelete y ponerles, no sé... delete por ejemplo, te quedaría así:

Code: Select all

	protected function validateDelete() {
		if (!$this->user->hasPermission('delete', 'catalog/attribute')) {
			$this->error['warning'] = $this->language->get('error_permission');
		}
Después dentro del archivo admin/controller/user/user_permission.php busca el siguiente código:

Code: Select all

		if (isset($this->request->post['permission']['modify'])) {
			$this->data['modify'] = $this->request->post['permission']['modify'];
		} elseif (isset($user_group_info['permission']['modify'])) {
			$this->data['modify'] = $user_group_info['permission']['modify'];
		} else { 
			$this->data['modify'] = array();
		}
Y abajo pegas el nuevo parámetro que se agrega, que es:

Code: Select all

		if (isset($this->request->post['permission']['delete'])) {
			$this->data['delete'] = $this->request->post['permission']['delete'];
		} elseif (isset($user_group_info['permission']['modify'])) {
			$this->data['delete'] = $user_group_info['permission']['delete'];
		} else { 
			$this->data['delete'] = array();
		}
En la vista, admin/view/template/user/user_group_form.tpl busca donde se cierra la tabla ( </table> ) y arriba agregas:

Code: Select all

          <tr>
            <td>Permisos para eliminar</td>
            <td><div class="scrollbox">
                <?php $class = 'odd'; ?>
                <?php foreach ($permissions as $permission) { ?>
                <?php $class = ($class == 'even' ? 'odd' : 'even'); ?>
                <div class="<?php echo $class; ?>">
                  <?php if (in_array($permission, $delete)) { ?>
                  <input type="checkbox" name="permission[delete][]" value="<?php echo $permission; ?>" checked="checked" />
                  <?php echo $permission; ?>
                  <?php } else { ?>
                  <input type="checkbox" name="permission[delete][]" value="<?php echo $permission; ?>" />
                  <?php echo $permission; ?>
                  <?php } ?>
                </div>
                <?php } ?>
              </div>
              <a onclick="$(this).parent().find(':checkbox').attr('checked', true);"><?php echo $text_select_all; ?></a> / <a onclick="$(this).parent().find(':checkbox').attr('checked', false);"><?php echo $text_unselect_all; ?></a></td>
          </tr>

Por último creo que deberías de ingreas dentro del panel de control a los permisos de grupos y asignar ahora quienes pueden eliminar datos y de que archivos.


IMPORTANTE: no lo probé, creo que es así pero no obstante anda modificandolo con cuidado y documentando lo que vas haciendo por las dudas, pero seguro es por ahí donde debes ir para lograr lo que queres hacer

User avatar
Active Member

Posts

Joined
Thu Oct 01, 2009 7:37 am
Location - Córdoba, Argentina

Post by zentimus » Tue Apr 22, 2014 7:16 pm

Gracia cofran
Esto es lo que voy haciendo pero como bien dices muy poco a poco ya que no se si el resultado sera el esperado.
Ya te contare que tal.
De nuevo muchisimas gracias

New member

Posts

Joined
Fri Feb 28, 2014 3:31 am

Post by mchanona » Thu Mar 05, 2015 9:15 pm

Hola, nos pueden contar como quedo ? necesito implementar algo asi en 1.5.6.x saludos.

Ergotron Soportes para pantallas


Newbie

Posts

Joined
Wed Mar 14, 2012 1:31 am


Post by mchanona » Thu Mar 05, 2015 9:41 pm

Bueno, ya lo hize pero marca un error "in_array() expects parameter 2 to be array, null "

sera algo de alguna tabla que hay que agregar algun campo para que guarde los permisos?

Saludos.

Ergotron Soportes para pantallas


Newbie

Posts

Joined
Wed Mar 14, 2012 1:31 am


Post by Ergotron_Mexico » Wed Oct 07, 2015 10:22 pm

Hola, podran compartir como quedo, si funciono o no ?

Saludos.

ergotron mexico


New member

Posts

Joined
Wed Nov 06, 2013 12:40 am
Location - Mexico

Post by Elenacasas » Sat Oct 17, 2015 6:58 pm

Hola necesitaría saber si funciona o no también, alguien lo probó?

User avatar
Newbie

Posts

Joined
Sat Oct 17, 2015 6:53 pm
Location - Europe

Post by CoverUp » Fri Oct 23, 2015 11:36 pm

sólo puedes rescatar la idea general de este post, el código ya ha variado bastante desde marzo del 2014 hasta ahora casi finales del 2015.
pero en general debiese funcionar, renombrar /admin es bien comun
saludos

Desarrollador OpenCart: Chilexpress, Correos de Chile, Tur-Bus, Pullman Bus, Starken, WebPay Plus, Servipag y otros a pedido. Todos los trabajos estan garantizados y con factura electrónica.


Active Member

Posts

Joined
Tue Oct 21, 2014 12:22 am

Post by Sara26 » Sat Oct 24, 2015 4:59 pm

hola alguien sabe si sigue funcionando estaría, interesado en implantarlo ? es muy difícil ? , saludos

Recetas de Cocina


User avatar
Newbie

Posts

Joined
Sat Oct 24, 2015 4:54 pm
Who is online

Users browsing this forum: No registered users and 5 guests