3 Stimmen

Was ist die Beziehung zwischen user_access und hook_perm in drupal?

Es scheint, dass diese beiden Funktionen verwendet werden, um zu prüfen, ob ein Benutzer ein Vorrecht hat.

Und der Unterschied ist für mich nicht offensichtlich.

Kann das jemand näher erläutern?

8voto

acm Punkte 6408

Wenn Sie die hook_perm werden die Berechtigungen für das angegebene Modul wie folgt definiert

/**
 * Implementation of hook_perm().
 */
function yourmodule_perm() {
  return array('can select', 'can update', 'can delete');
}

Die Berechtigungen an sich bedeuten jedoch nichts... Eine Möglichkeit zu kontrollieren, was ein Benutzer tun kann und was nicht, ist user_access :

// @ some other module function
if (user_access('can delete')){
  // delete stuff
} else {
  drupal_access_denied();
}

Auch, hook_perm -Definierte Berechtigungen können beim Einrichten Ihres Modulmenüs verwendet werden hook_menu durch Handeln:

// @hook_menu
$items['modulepath'] = array(
    'title'            => 'modulename',
    'page callback'    => 'module_function',
    'access callback'  => 'user_access',
    'access arguments' =>  array('can select'),
    'type'             => MENU_NORMAL_ITEM,
);

Vergessen Sie nicht, Ihre Benutzerrechte zu konfigurieren unter: admin/user/permissions

1voto

chx Punkte 10935

Hook_perm definiert die möglichen Berechtigungen, dann können Sie zu admin/user/permissions gehen und die Berechtigungen bestimmten Rollen zuweisen und dann mit user_access prüfen, ob der Benutzer die Berechtigung erhalten hat (zu einer Rolle gehört, die die Berechtigung enthält).

1voto

Finbarr Punkte 29720

hook_perm können Sie über ein Modul benutzerdefinierte Berechtigungen hinzufügen. Diese Berechtigungen werden dann bei der Konfiguration von Benutzerrollen angezeigt. user_access geht es darum festzustellen, ob ein Benutzer Zugang zu bestimmten Rechten hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X