Posted by tonoFlores on July 31, 2014 at 10:29pm
Que tal comunidad:
Me encuentro realizando un modulo personalizado que accede a los datos de una bd externa, sin embargo los datos que despliegue solo seran para usuarios registrados. Hasta este momento ya accedo a la bd sin ningun problema y en el apartado de admin/people/permissions ya aparece mi modulo para asignarle permisos pero no respeta la restriccion del acceso. Se que esto se logra con hook_permission y hook menu pero los diferentes post que he consultado no han logrado resolver mi dilema. Anexo codigo saludos!
<?php
function bdvinos_menu() {
$items['vinos/listar'] = array(
'title' => 'Lista de Vinos',
'page callback' => 'bdvinos_vinos_listar',
'access callback' => TRUE,
);
return $items;
}
function bdvinos_vinos_listar() {
$bd_vinos = array(
'database' => 'vinos',
'username' => 'root',
'password' => 'password',
'host' => 'localhost',
'driver' => 'mysql',
);
$core = array('cache', 'cache_path', 'cache_filter', 'cache_bootstrap', 'cache_page');
$cache_tables = array_merge(module_invoke_all('flush_caches'), $core);
foreach ($cache_tables as $table) {
cache_clear_all('*', $table, TRUE);
}
try{
Database::addConnectionInfo('vinos', 'default', $bd_vinos);
db_set_active('vinos');
} catch (Exception $e){
db_set_active();
return "se produjo un error al marcar la BD activa: ".$e;
}
$sql = "SELECT * from vinos";
$results = db_query($sql);
$salida = "";
foreach($results as $res){
$salida = $salida."[ID] =".$res->id." [NOMBRE] = ".$res->titulo;
}
db_set_active();
return $salida;
}
function bdvinos_permission() {
return array(
'Acceso vinos' => array(
'title' => t('Permisos BD Vinos'),
),
);
}
function bdvinos_menu() {
$items = array();
$items['bdvinos'] = array(
'title' => 'Lista de Vinos',
'page callback' => 'bdvinos_vinos_listar',
'access arguments' => array('Acceso vinos'),
'type' => MENU_CALLBACK,
);
return $items;
}
?>
Comments
Función repetida
Hola Toño,
Echando un ojo rápido veo que tienes repetida la función "bdvinos_menu", la primera sin restricción y la segunda con el 'access arguments' entonces la ruta "vinos/listar" no tiene restricción y "bdvinos" si está restringida.
Saludos,
georch