BenutzeranmeldungInfo |
Drupal und Image: Zugriff auf Bilder (und Artikel) beschränkenHinweis: Wer nur am Uppsala-Blog und weniger an Content-Management-Software interessiert ist, kann hier aufhören zu lesen. Ich hatte schon länger vor, den Zugriff auf die (mit Image hochgeladenen) Bilder in diesem Blog derart zu beschränken, dass nur angemeldete Benutzer die Bilder in voller Auflösung betrachten können. Zunächst hatte ich nach einem Modul gesucht, das den Zugriff nach dem Typ des Nodes beschränkt um die Bilder nicht einzeln schützen zu müssen, war aber nicht fündig geworden. Also habe ich zunächst einmal Simple Access installiert, mit dem man den Zugriff auf einzelne Nodes für bestimmte Nutzergruppen freigeben kann, zumal ich inzwischen eventuell auch einzelne Artikel schützen wollte. 1. Bilder mit Simple Access schützen 2. Direktzugriff auf Dateien unterbinden // edit // see http://drupal.org/node/26601#comment-54855 and http://www.tilman.de/uppsala/?q=node/84 function image_file_download($file) { // get image from database $result = db_fetch_object(db_query("SELECT f.*, n.type FROM {files} f LEFT JOIN {node} n ON f.nid=n.nid WHERE f.filepath='%s'", $file)); if ($result->type == 'image') { // only allow download if its our node, and the user has privilege or it is only a thumbnail if (user_access('view original images') || strpos($file, '.thumbnail.')) { $headers = array('Content-Type: ' . $result->filemime); return $headers; } } // otherwise, its some other modules responsibility return -1; } Ergebnis: Bilder werden nur noch an registrierte Benutzer herausgegeben, oder wenn ".thumbnail." im Dateinamen vorkommt. (Drupal fügt zum eigentlichen Datei noch die Bildgröße als Suffix hinzu.) Anmerkung: Der Zugriff über den physischen Pfad auf die Bilder war bei mir immer noch möglich, was aber wohl eher mit einer Fehlkonfiguration oder meinen Spielereien zu tun hat. Dieses Problem ließ sich dann wirklich mit einer htaccess-Datei im Verzeichnis files/images mit dem Inhalt Deny from alllösen. |