it-swarm-eu.dev

Omezte oprávnění na vlastní moduly v drupal

Používám drupal 6) a vytvořil jsem vlastní modul. Tento modul se skládá z formuláře, který lze použít pro přidání záznamů do databáze.

Ale viděl jsem, že odkaz na tento formulář (http://localhost/drupal/my_module/form) je přístupný všem uživatelům, dokonce i anonymním uživatelům.

Chci omezit přístup k tomuto modulu a formuláři od všech běžných uživatelů. Chci přístup pouze správci.

Vytvořil jsem roli nazvanou Administrátor a povolil můj modul pouze pro administrátora. Stále to nefunguje.

Jak mohu omezit přístup k mému vlastnímu modulu?

6
shasi kanth
  1. Vyhlásit oprávnění pomocí hook_perm () . Doporučuje se nějakým způsobem použít název vašeho modulu v oprávnění nebo něco jedinečného pro váš modul, aby nedošlo ke konfliktům (neexistuje žádné jmenné prostory, názvy oprávnění jsou globální).

  2. Do implementace hook_menu () přidejte 'access arguments' => array('permission name here'). Protože výchozí zpětné volání přístupu je ser_access () , systém nabídky zavolá user_access('your permission name') a zkontroluje, zda má aktuální uživatel přístup k této položce nabídky. Další informace naleznete v dokumentaci hook_menu () . Můžete také použít user_access() přímo ve vašem kódu, pokud chcete zkontrolovat oprávnění někde jinde; například pro bloky můžete tuto funkci použít přímo.

  3. Poté můžete vytvořit libovolné role a udělit jim oprávnění vašeho modulu na administrátor/uživatel/oprávnění. Důležitým rozdílem je, že oprávnění jsou řízena v modulech (které lze víceméně genericky psát), zatímco role a oprávnění, která mají, jsou specifická pro konkrétní web.

Pak nezapomeňte znovu vytvořit nabídku (pomocí devel.module nebo uložením formuláře modulů) a měli byste být dobří.

8
Berdir