Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[gelöst]Bestimmern was eine Permission den letztendlich erlaubt

Eingetragen von dontgotanick (156)
am 21.05.2010 - 08:45 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hi,

evtl eine blöde Frage aber ich finde iwie nichts sinnvolles dazu.

Wie ich Permissions in eigenen Modulen definiere weiss ich per hook_perm().

Aber wie sage ich denn jetzt was diese letztendlich bewirkt.

LG

david

‹ [gelöst] Hook nachdem Node komplett gespeichert wurde Form API : $_POST und $_GET "gemischt" ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

user_access

Eingetragen von stBorchert (6003)
am 21.05.2010 - 08:59 Uhr

Hallo.
Die entsprechenden Funktionsteile kannst Du dann mittels [api:user_access] vor Benutzern ohne entsprechende Berechtigung "ausklammern".
Mit dieser Funktion prüfst Du also, ob ein Benutzer die gewünschte Berechtigung hat.

hth,

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ok aber iwie...

Eingetragen von dontgotanick (156)
am 21.05.2010 - 09:15 Uhr

funzt das nicht so wie ich mir gedacht habe.

Ich will das wenn einer die Permission hat administer Registration hat auf die settings Seite darf.
Das habe ich Versucht so zu realisieren was ist falshc denn es funzt nicht.

function cwg_registration_perm() {
  return array('administer registration');
} // function cwg_registration_perm()

function cwg_registration_menu() {
  if (user_access('administer registration')) {
   
  $items = array();

  $items['admin/settings/cwg_registration'] = array(
    'title' => 'CWG-Registration module settings',
    'description' => 'Expands the registration process with certain notifications',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('cwg_registration_admin'),
    'access arguments' => array('access administration pages'),
    'type' => MENU_NORMAL_ITEM,
   );

  return $items;
 
  }
}

LG

dave

  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_menu

Eingetragen von stBorchert (6003)
am 21.05.2010 - 09:47 Uhr

Bitte schau Dir nochmal die Dokumentation zu [api:hook_menu] an. Du kannst dort direkt angeben, welche Berechtigungen zur Anzeige des Menüpunktes (und somit zum Zugriff auf die Seite) notwendig sind.
Stichwort: "access arguments".

[api:user_access] ist hierbei nicht notwendig, da die Funktion explizit als Standard "access callback" aufgerufen wird.

 Stefan

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi

Eingetragen von dontgotanick (156)
am 21.05.2010 - 09:51 Uhr

ja das habe ich angepasst weil ich da ja den falschen Wert drinstehen habe,
aber es kommt immer restricted area?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Menüs werden auf Vorrat gebaut, deshalb...

Eingetragen von codeherr (73)
am 27.05.2010 - 13:11 Uhr

...hier mal der überarbeitete Code, der so laufen müßte wenn Du sonst alles richtig gemacht hast:

function cwg_registration_perm() {
  return array('administer registration');
} // function cwg_registration_perm()

function cwg_registration_menu() {
  // weg damit, siehe Anmerkung 1 unten ->  if (user_access('administer registration')) {
   
  $items = array();

  $items['admin/settings/cwg_registration'] = array(
    'title' => 'CWG-Registration module settings',
    'description' => 'Expands the registration process with certain notifications',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('cwg_registration_admin'),
    // siehe Anmerkung 2
    'access arguments' => array('administer registration'),
    'type' => MENU_NORMAL_ITEM,
   );

  return $items;
 
  // auch weg, klar!: }
}

Anmerkung 1: Das Menü wird zwischengespeichert. Es wird nur neu erstellt, wenn der Befehl dazu explizit erteilt wird, z.B. bei Installation einer Moduls, oder wenn eine inhaltliche Änderung eben auch Auswirkungen auf die globale Menüstruktur hat (siehe menu_rebuild()). Die Tabelle enthält dann neben URL und Menutitel eben auch noch die schon genannten Callbacks (s. Anmerkung 2 und Hinweis von stborchert) und ihre Parameter, sodaß letztlich beim Aufruf einer Seite nicht das gesamte Menü gebaut wird, sondern nur noch die passenden Einträge aus der Tabelle geholt und dann immer aktuell mit den Berechtigungen abgeglichen werden.

Anmerkung 2: Der Abgleich geschieht, sofern du nicht in dem Menüpunkt-Array sowas wie

'access callback' => true

stehen hast oder eine eigene Funktion, die das dann z.B. modulintern erledigt, wie hier:

'access callback' => 'deinmodul_check_access'

und entweder true oder false zurückgibt, mit dem genannten Standardcallback user_access(). Dieser wird von DP automatisch aufgerufen, wenn du keine eigene Definition erstellt hast; eigentlich steht also "unsichtbar" anstelle meines zweiter Kommentars in deinem Code:

'access callback' => 'user_access'.

Der Aufruf durch Drupal erfolgt dann mit den "access arguments" und sieht in deinem Fall intern etwa so aus:

$permitted = user_access(array('administer registration'));

Sofern der aktuelle User nun einer Rolle angehört, für die unter "Berechtigungen" deine "administer registration"-Erlaubnis gesetzt ist, ist das Ergebnis "true" und der User erhält den Menüpunkt angezeigt sowie Zugriff auf den entspr. URL.

Ich hoffe, das hilft dir und ich habe es nicht zu kompliziert gemacht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi

Eingetragen von dontgotanick (156)
am 28.05.2010 - 10:00 Uhr

danke für deine Antwort aber das funktioniert auch nicht.

Wer ne Idee?

  • Anmelden oder Registrieren um Kommentare zu schreiben

gelöst

Eingetragen von dontgotanick (156)
am 05.07.2010 - 08:21 Uhr

Hatte nen Tippfehler .............

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Tagen 18 Stunden
  • Hey danke
    vor 3 Tagen 12 Stunden
  • Update: jetzt gibt's ein
    vor 4 Tagen 7 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 1 Tag
  • Da scheint die Terminologie
    vor 1 Woche 1 Tag
  • Kannst doch auch alles direkt
    vor 1 Woche 6 Tagen
  • In der entsprechenden View
    vor 1 Woche 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 1 Woche 6 Tagen
  • gelöst
    vor 4 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association