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!
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!
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!
Saludos!
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.
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.
Bueno en los controladores del admin tenes dentro de cada archivo funciones que protegen los grupos. Por ejemplo la que permite editar comienza así:
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í:
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í:
Después dentro del archivo admin/controller/user/user_permission.php busca el siguiente código:
Y abajo pegas el nuevo parámetro que se agrega, que es:
En la vista, admin/view/template/user/user_group_form.tpl busca donde se cierra la tabla ( </table> ) y arriba agregas:
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
Code: Select all
protected function validateForm() {
if (!$this->user->hasPermission('modify', 'catalog/attribute')) {
$this->error['warning'] = $this->language->get('error_permission');
}
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');
}
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');
}
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();
}
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();
}
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
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
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.
hola alguien sabe si sigue funcionando estaría, interesado en implantarlo ? es muy difícil ? , saludos
Who is online
Users browsing this forum: No registered users and 5 guests