hook_menu

3 contenuti / 0 new
Ultimo contenuto
hook_menu

Ciao a tutti,
avrei bisogno di alcuni chiarimenti in merito alla funzione in oggetto.

function pagi_menu() {
$items = array();

$items['pagi'] = array(
'title' => t('Data from external db'),
'description' => 'pagi',
'page callback' => 'service_list',
'access arguments' => array('access content'),
'menu_name' => 'menu-menu-cliente',
'type' => MENU_NORMAL_ITEM,
);
return $items;
}

Nello specifico, l'array pagi è raggingibile tramite l'URL www.miosito.com/pagi ... Corretto?
Il quale in questo momento è accessibile a tutti....
Se volessi limitare l accesso a questo modulo solo ad un gruppo di utenti... come dovrei procedere?

Drupal Version:

1) Il path dove punta il tuo menu lo specifichi in $items:

<?php
$items
['path_to_your_menu'] = ...; // es: $items['admin/pagi']
?>

2) In che modo vuoi limitare l'accesso a quel modulo?
Hai bisogno di un permesso specifico? Se si, allora devi implementare anche l'hook_permission.
Se dichiari:

<?php
 
'access arguments' => array('access content'),
?>

tutti gli utenti con permesso Access content possono accedere al menu.

3) Se non dico castronerie, o scegli la strada indicata al punto precedente, oppure nel tuo hook_menu puoi aggiungere una funzione di callback per selezionare da codice quali utenti autorizzare; dovrebbe essere qualcosa del tipo:

<?php
function pagi_menu() {
 
$items = array();
 
$items['pagi'] = array(
   
'title' => t('Data from external db'),
   
'description' => 'pagi',
   
'page callback' => 'service_list',
   
'access callback' => 'funzione_di_callback',
   
'access arguments' => array('access content'),
   
'menu_name' => 'menu-menu-cliente',
   
'type' => MENU_NORMAL_ITEM,
  );
  return
$items;
}
?>

La funzione_di_callback sarà una funzione che restituisce TRUE se l'utente dispone di diritti di accesso a questa voce di menu, e FALSE in caso contrario.

Ciao!

Ciao a tutti, questa è una funzione presa dalle faq ed è ottima:

$items['faq/order'] = array(
    'title' => 'Order',
    'description' => 'Allows the user to configure the order of questions and answers on a FAQ page.',
    'file' => 'faq.admin.inc',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('faq_order_settings_form'),
    'access callback' => 'user_access',
// in permessi si potrà impostare la visualizzazione
    'access arguments' => array('administer faq order'),
    'type' => MENU_LOCAL_TASK,
    'weight' => -8,
  );

poi l'hook per l'accesso in cui in base alla variabile $op passata come argomento, inserita nelle istruzioni di selezione, si definisce chi puo' fare cosa.

/**
* Implementation of hook_access().
*/
function faq_access($op, $node, $account = NULL) {
  global $user;
  if (empty($account)) {
    $account = $user;
  }
  if ($op != 'create') {
    $node = (object)$node;
  }
  if ($op == 'create') {
    if (user_access('create faq') || user_access('administer faq')) {
      return TRUE;
    }
  }
  elseif ($op == 'update' || $op == 'delete') {
    if (user_access('edit faq') || user_access('administer faq')) {
      return TRUE;
    }
    elseif (user_access('edit own faq') && $account->uid == $node->uid) {
      return TRUE;
    }
  }
}

questo il gancio permessi in cui è presente nell'array 'administer faq order'

/**
* Implementation of hook_perm().
*/
function faq_perm() {
  return array('administer faq', 'view faq page', 'edit own faq', 'edit faq', 'create faq', 'administer faq order');
}

Spero sia utile. Comunque puoi analizzare il modulo faq complesso ma molto ben fatto.