carla089 Posted December 11, 2013 Share Posted December 11, 2013 (edited) Hola Intento configurar los permisos para dar acceso en el back office sólo a determinados módulos a un perfil de usuario.Por ejemplo, dar acceso únicamente al footer, el menu horizontal y el slider a un usuario de la Tienda que no debería poder tocar en otros modulos (como configuraciones de los métodos de pago), pero que si debe poder actualizar aspectos básicos de la apariencia. Me he planteado 3 posibles soluciones Administración - Permisos y enlaces en Acceso Rápido Supongo que ésta sería la forma de hacerlo, si consiguiera que funcionara. La idea es poner enlaces en Acceso Rápido a esos 4 modulos (sin los token).Y en Permisos denegar el acceso al Perfil X a Módulos (o permitirle Editar pero no Ver), pero en la tabla derecha (Módulos Ver/Configurar) permitir configurar esos 4 modulos.El resultado es que los enlaces funcionan pero da "Acceso denegado". ¿Está mal planteado?¿Estoy haciendo algo mal?¿O es que esa columna de Modulos en Permisos es para otra cosa? Crear una Tab en BackOffice que muestre esos módulos Sin embargo, si al final sería una pestaña que derivaría del controlador de modulos, y si en Permisos deniego el acceso creo ke me encontraría con el mismo problema: dejar entrar en el enlace para mostrar un "Acceso denegado" Ocultar pestaña de modulos Ésta es la posibilidad en la que deposito más esperanzas. Podría poner los enlaces en el Acceso Rápido y en Permisos permitir ver y editar los modulos para ese perfil, pero luego ocultar la pestaña a la vista. Es algo chapucero, pero menos es nada.¿Hay alguna forma de ocultar (sin desactivar o denegar el acceso) una tab para un perfil? Incluso si no se puede me serviría ocultarlas para todos. Ojalá encontremos alguna solución para esto Gracias por anticipado^^ Edited December 12, 2013 by carla089 (see edit history) Link to comment Share on other sites More sharing options...
carla089 Posted December 12, 2013 Author Share Posted December 12, 2013 (edited) Bueno, he encontrado una solución (algo chapucera pero funciona), ocultando la pestaña de modulos. Al final me contesto a mí misma RESULTADO Sólo el SuperAdmin y el Administrador pueden ver la pestaña de modulos, y el PerfilX puede configurar determinados módulos, sin ver más opciones ni más módulos. Hace poco que empecé con prestashop, php y smarty y seguro que hay una forma mejor de hacerlo. Como decía ésta es algo chapucera porque PerfilX sí tendría más acceso del que quisiéramos, lo que ocurre es que no tiene a la vista los enlaces, tendría que introducir la url a mano. Para mí me sirve (ese perfil está orientado a usuarios básicos) pero no deja de ser un fallo de seguridad enorme. PASOS Administración - Permisos PerfilX - Permitirle Ver y editar Módulos. En columna derecha permitir ver todos y configurar aquellos que queramos. Acceso Rápido Poner los enlaces a configuración de esos módulos, solo controller y configure, sin token. Por ejemplo, para administrar los comentarios del producto: miDominio/adminDir/index.php?controller=AdminModules&configure=productcomments Modificar archivos adminDir\themes\default\template\header.tpl Código Ocultar Modules Tab En torno a la línea 200 encontramos esto: {foreach $tabs AS $t} {if $t.active} <li class="submenu_size maintab {if $t.current}active{/if}" id="maintab{$t.id_tab}"> <a href="#" class="title"> <img src="{$t.img}" alt="" />{if $t.name eq ''}{$t.class_name}{else}{$t.name}{/if} </a> <ul class="submenu"> {foreach from=$t.sub_tabs item=t2} {if $t2.active} <li{if $t2.current} class="active"{/if}><a href="{$t2.href|escape:'htmlall':'UTF-8'}">{if $t2.name eq ''}{$t2.class_name}{else}{$t2.name|escape:'htmlall':'UTF-8'}{/if}</a></li> {/if} {/foreach} </ul> </li> {/if} {/foreach} y lo sustituímos por esto: {foreach $tabs AS $t} {if $t.active} {if $t.id_tab == 15 && $employee->id_profile != 1 & $employee->id_profile != 2} <!-- Hidden Modules Tab--> {else} <li class="submenu_size maintab {if $t.current}active{/if}" id="maintab{$t.id_tab}"> <a href="#" class="title"> <img src="{$t.img}" alt="" />{if $t.name eq ''}{$t.class_name}{else}{$t.name}{/if} </a> <ul class="submenu"> {foreach from=$t.sub_tabs item=t2} {if $t2.active} <li{if $t2.current} class="active"{/if}><a href="{$t2.href|escape:'htmlall':'UTF-8'}">{if $t2.name eq ''}{$t2.class_name}{else}{$t2.name|escape:'htmlall':'UTF-8'}{/if}</a></li> {/if} {/foreach} </ul> </li> {/if} {/if} Ocultar opción de buscar en modulos original <option value="5" {if {$search_type} == 5} selected="selected" {/if}>{l s='carts'}</option> <option value="7" {if {$search_type} == 7} selected="selected" {/if}>{l s='modules'}</option> </select> modificado <option value="5" {if {$search_type} == 5} selected="selected" {/if}>{l s='carts'}</option> {if $employee->id_profile== 1[spam-filter] <option value="7" {if {$search_type} == 7} selected="selected" {/if}>{l s='modules'}</option> {/if} controllers\admin\AdminModulesController.php Para que no le aparezcan los links a "Atrás" y "Configurar los hooks" en la configuración del módulo Código original $toolbar = '<table class="table" cellpadding="0" cellspacing="0" style="margin:auto;text-align:center"><tr> <th>'.$this->l('Module').' <span style="color: green;">'.$module->name.'</span></th> <th><a href="'.$backlink.'" style="padding:5px 10px">'.$this->l('Back').'</a></th> <th><a href="'.$hooklink.'" style="padding:5px 10px">'.$this->l('Manage hooks').'</a></th> <th style="padding:5px 10px">'.$this->l('Manage translations').' '; foreach (Language::getLanguages(false) as $language) $toolbar .= '<a href="'.$tradlink.$language['iso_code'].'#'.$module->name.'" style="margin-left:5px"><img src="'._THEME_LANG_DIR_.$language['id_lang'].'.jpg" alt="'.$language['iso_code'].'" title="'.$language['iso_code'].'" /></a>'; $toolbar .= '</th></tr>'; modificado $toolbar = '<table class="table" cellpadding="0" cellspacing="0" style="margin:auto;text-align:center"><tr> <th>'.$this->l('Module').' <span style="color: green;">'.$module->name.'</span></th>'; if ($this->context->employee->id_profile == 1 || $this->context->employee->id_profile == 2) { $toolbar .= '<th><a href="'.$backlink.'" style="padding:5px 10px">'.$this->l('Back').'</a></th> <th><a href="'.$hooklink.'" style="padding:5px 10px">'.$this->l('Manage hooks').'</a></th>'; } $toolbar .= '<th style="padding:5px 10px">'.$this->l('Manage translations').' '; foreach (Language::getLanguages(false) as $language) $toolbar .= '<a href="'.$tradlink.$language['iso_code'].'#'.$module->name.'" style="margin-left:5px"><img src="'._THEME_LANG_DIR_.$language['id_lang'].'.jpg" alt="'.$language['iso_code'].'" title="'.$language['iso_code'].'" /></a>'; $toolbar .= '</th></tr>'; Dejo los archivos en el zip Mi versión de Prestahop: 1.5.6.1 psOcultarModulos_20131212.zip Edited December 12, 2013 by carla089 (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts