hook_permission Drupal 7 մուտքի թույլտվություններ տարբեր դերերի համար
Նախորդ դասերում մենք արտածում էինք էջեր և բլոկներ տարբեր տեղերում, ինչպես նաև օգտագործում էինք access arguments և access callback հատկությունները՝ էջերին հասանելիությունը սահմանափակելու համար։ Այս դասում մենք կստեղծենք օգտվողների թույլտվությունների ճկուն վերահսկման հնարավորություն՝ օգտագործելով hook_permission() (Drupal 6-ում՝ hook_perm())։
hook_permission()
Սահմանում է օգտվողի թույլտվությունները։
Այս hook-ը թույլ է տալիս մոդուլին ավելացնել թույլտվություններ, որոնք կառաջարկվեն կայքի ադմինիստրացիայի «Թույլտվություններ» էջում։
Վերադարձվող արժեք
Ասոցիատիվ զանգված, որի բանալիները թույլտվությունների մեքենայական անուններն են, իսկ արժեքները՝ ենթամասիվներ՝ հետևյալ հատկություններով՝
- title: Թույլտվության անվանումը (tr-ի մեջ)
- description: (ըստ ցանկության) Բացատրություն թույլտվության նպատակով (tr-ի մեջ)
- restrict access: (ըստ ցանկության) TRUE եթե պետք է սահմանափակվի միայն վստահելի օգտվողներով
- warning: (ըստ ցանկության) Սեփական զգուշացման հաղորդագրություն
Օրինակ կոդ՝
function sitemade_permission() {
return array(
'view page example' => array(
'title' => t('View page example'),
'description' => t('View simple page example'),
),
);
}
function sitemade_menu() {
$items = array();
$items['admin/config/content/page_example'] = array(
'title' => 'Օրինակ էջ',
'description' => 'Պարզ էջ',
'page callback' => '_page_example',
'access arguments' => array('view page example'),
);
return $items;
}
function _page_example($content = NULL) {
$content = '';
$query = db_select('node_revision', 'n');
$query->innerJoin('field_revision_body', 'b', 'b.revision_id = n.vid');
$query->innerJoin('node', 'd', 'n.nid = d.nid');
$query->fields('n', array('title', 'nid', 'vid'));
$query->fields('b', array('body_value'));
$query->condition('d.type', 'news');
$query->orderBy('n.timestamp', 'DESC');
$query->range(0, 10);
$result = $query->execute();
while ($nodes = $result->fetch()) {
$content .= '' . $nodes->title . '
';
$content .= $nodes->body_value;
}
return $content;
}
Այժմ admin/people/permissions էջում կհայտնվի նոր թույլտվություն՝

Ադմինիստրատորի համար նշում ենք թույլտվությունը։ Այժմ admin/config/content/page_example էջը հասանելի կլինի միայն նրանց, ովքեր ունեն այս թույլտվությունը։ Այլ օգտվողները կստանան 403 Access Denied սխալ։
Հաջորդ դասում կստեղծենք ադմինիստրատիվ էջ՝ կայքի կարգավորումների ձևով՝ օգտագործելով Drupal Forms API։