Admin menü és user jogkörök

szeva képe

Sziasztok,

van egy saját készítésű modulom, és azt szeretném, ha ez a modul csak egy bizonyos jogkörrel rendelkező felhasználó számára lenne elérhető.

Tehát van pl. egy jogkor1 nevű jogköröm, ehhez rendeltem egy user1 nevű felhasználót. Van a module1 nevű modulom. Gondolom, a module1.module-ban kellene valamit a hook_menu-vel csinálni, de nem nagyon értem, hogy mit.

function module1_menu() {

$items['admin/module1'] = array(
'title' => 'Cím',
'page callback' => 'module1_main_arguments',
'access arguments' => array('administer content types'),
'file path' => drupal_get_path('module', 'system'),
'file' => 'system.admin.inc',

);

return $items;

}

Az admin menüben így megjelenik, viszont így most minden felhasználó látja. Azt szeretném, hogy csak a jogkor1 jogkörrel rendelkező felhasználók lássák az admin menüben is, és természetesen direkt url beírásával se tudják elérni.

Köszönöm a segítséget.

Drupal verzió: 
szeva képe

Közben rájöttem, és nem tudom a témát törölni, így iderakom a megoldást is:

  1. function module1_menu() {
  2.  
  3. $items['admin/module1'] = array(
  4. 'title' => 'Cím',
  5. 'page callback' => 'module1_main_arguments',
  6. 'access callback' => 'module1_user_has_role',
  7. 'access arguments' => array(1, array('jogkor1')),
  8. 'file path' => drupal_get_path('module', 'system'),
  9. 'file' => 'system.admin.inc',
  10. );
  11.  
  12. return $items;
  13.  
  14. }
  15.  
  16. function module1_user_has_role($user, $roles = array()) {
  17. global $user;
  18. foreach ($roles as $role) {
  19. if (in_array($role, $user->roles)) {
  20. return TRUE;
  21. }
  22. }
  23. return FALSE;
  24. }
0
0

szeva

dj képe

function module1_menu() {
  $items = array();
  $items['admin/module1'] = array(
    'title' => 'Cím',       
    'page callback' => 'module1_main_page',   
    'access arguments' => array('module1 access'),
    //'file path' => drupal_get_path('module', 'system'), <- Ez nem kell neked.
    //'file' => 'system.admin.inc', <- Ez sem kell neked, ide az a fájlnév kell amiben megvalósítod a page callback funkciót vagy nem kell, ha a modul fájlban valósítod meg.
  );
 
  return $items;
}
 
function module1_permission() {
  $permissions = array();
  $permissions['module1 access'] = array(
    'title' => t('Access to module1'),
  );
 
  return $permissions;
}

Aztán a jogosultságoknál beállítod a szerepköröknek.
Bővebben:
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...
https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...

1
0

Üdv!
Dudás József