Downloadbereich für angemeldete Nutzer
am 24.09.2011 - 09:24 Uhr in
Hallo zusammen,
ich möchte auf meiner Seite einen Downloadbereich einrichten, der nur authentifizierten Benutzern zur Verfügung steht. Anonyme Nutzer sollen den Link (im Hauptmenü) zwar sehen, beim klick darauf soll aber das login/registrierungsformular erscheinen.
mein bisheriger gedankengang:
Es gibt einen Inhaltstyp Download der als Downloadrubrik dient und in den ich mehrere Dateien einfügen kann. Nun habe ich mir einen View erstellt, der mir alle Inhalte vom Typ Download auflistet. So bekomme ich eine schöne liste mit Dateien, entsprechend gruppiert mit Überschriften.
Der View hat den Pfad localhost/download. Wenn ich angemeldet bin funktioniert alles, wenn ich aber als anonymer Nutzer die Seite aufrufe wir mir nicht mal der Link im Hauptmenü angezeigt. Egal ob ich den Link direkt vom View erstellen lasse, oder ob ich ihn per hand ins menü eintrage. Ich habe auch schon mal den View für alle sichtbar gemacht und mittels des "Content Access"-Moduls die Berechtigungen zum Anzeigen von Downloads für anonyme Benutzer entfernt. Nun kann aber der anonyme die Downloads trotzdem sehen, da die berechtigungen scheinbar nicht greifen wenn per view darauf zugegriffen wird.
Wie regelt man sowas am einfachsten? Seite für authentifizierte, falls nicht authentifiziert --> Loginpage.
Danke schon mal für eure Rückmeldungen :)
Grüße,
Markus
- Anmelden oder Registrieren um Kommentare zu schreiben
Zuerst einmal musst du dafür
am 24.09.2011 - 11:20 Uhr
Zuerst einmal musst du dafür sorgen, dass die Seite für anonymous zugänglich ist, sonst erscheint sie nicht im Menü. Wenn der View eine Seite generiert, darf diese also nicht auf bestimmte Rollen eingeschränkt werden.
Je nachdem, ob du auch zugangsfreie Downloads anbieten willst, kannst du eine Seite über Views bauen (mit den frei zugänglichen Links). Zusätzlich machst du dann ein Views-Attachment mit Einschränkung des Zugriffs für die entsprechenden Rollen. Oder aber du legst eine Seite händisch an und baust den View als Block ein, zusätzlich das Anmeldeformular als Block (was ja nicht angezeigt wird, wenn man eingeloggt ist). Das wäre jetzt auf die Husche mein Lösungsansatz, kommt auf den größeren Kontext an, ob das was taugt.
Da vermutlich die Leute nicht auf den Node direkt zugreifen sollen, den du über den Inhaltstyp anlegst, solltest du mit Content Access noch den Zugriff darauf unterbinden. Das ist meines Wissens unabhängig von den Dateien, die mit der Nodeerstellung hochgeladen werden - die werden gesondert abgelegt und nur mit dem Node in Beziehung gesetzt, sind dann also auch nicht von den Zugriffsbeschränkungen betroffen.
Dateisystem hast du auf "private" stehen, oder? Sonst taugt der ganze Ansatz nichts, weil man über den Pfad auf die Datei direkt zugreifen kann (sofern bekannt).
Hi, danke für die rasche
am 24.09.2011 - 12:24 Uhr
Hi,
danke für die rasche Antwort.
Die Sache mit dem View und dem Anhang dazu hab ich recht gut hinbekommen, die sache mit der anzeige der login-seite allerdings noch nicht. muss ich dazu ne eigene template-datei erstellen (also node-xxx.tpl.php) um dann dann die beiden sachen als blöcke einbinden zu können? Wie würde das genau machen? zwei divs auf die seite und dann jeweils die inhalten einbinden, oder? Wie wären die php-zeilen dazu?
Sorry, bin noch nicht allzu fit in der ganzen drupal geschichte :)
Noch was: Wie kann ich den dateispeicherort von öffentlich auf privat umstellen? bei mir gibts da nur "öffentlich" als auswahl....
Wir waren doch alle
am 24.09.2011 - 12:47 Uhr
Wir waren doch alle irgendwann mal nicht allzu fit in der Drupalgeschichte - ich betrachte mich selbst noch als Anfängerin ;-)
a) Wenn du den Login-Block nicht noch woanders verwendest, kannst du den namens "Benutzeranmeldung" aus der Blockverwaltung admin/structure/block aus "Deaktiviert" einfach in den Inhaltsbereich verschieben (kommt aufs Theme an, wie der benannt ist).
b) Private Downloadmethode stellst du im "Dateisystem" ein: admin/config/media/file-system. Standardpfad ist sites/default/files/private - bei der Standard-Downloadmethode wählst du "Private Dateien werden durch Drupal ausgeliefert." (Dann wird jeder Zugriff auf eine Datei von Drupal kontrolliert, sonst kannst du den Direktaufruf nicht unterbinden.) Wenn das eingestellt ist, kannst du "Ziel beim Hochladen" wählen.
Ok, so hab ich das ganze
am 25.09.2011 - 10:03 Uhr
Ok, so hab ich das ganze jetzt hinbekommen. Danke dafür.
Was müsste ich machen, wenn ich den Benutzeranmeldeblock auch noch in einer sidebar haben möchte? (Ist zwar im moment nicht der fall, wäre aber evtl gut zu wissen...)
Gruß,
Markus
Der Login-Block ist doch
am 25.09.2011 - 10:17 Uhr
Der Login-Block ist doch standardmäßig in einer Seitenleiste untergebracht?!
Ansonsten gehst du eben zu den Blöcken, wählst den Login-Block aus und gibst dort an, dass er in einer Seitenleiste auftauchen soll.
Markus meint einen _zweiten_
am 25.09.2011 - 17:38 Uhr
Markus meint einen _zweiten_ Block ;-)
Geht sicherlich auf verschiedenen Wegen. Unserem Lieblingsmotto "There's a module for that" folgend, habe ich mal eins rausgepickt:
http://drupal.org/project/block
(Selber noch nicht ausprobiert, klingt aber probat.)
Ein Modul, von dem es noch
am 25.09.2011 - 18:49 Uhr
Ein Modul, von dem es noch kein Release gibt ;-)