V Drupalu 7 jsem narazil na problém s přístupem k neveřejným obrázkům. Web je bohužel přístupný jen v interní síti, tak nemohu poskytnout odkaz. Problém je následující:
Potřebuji na web ukládat články s obrázky, přičemž některé články (a jim přiřazené obrázky) mají být veřejné a jiné neveřejné. Zapnul jsem privátní ukládání obrázků a pro zobrazování obrázků využívám modul colorbox, což ale na níže popsaný problém nemá vliv.
Jak jsem pochopil, při zapnutí privátního ukládání obrázků se v článcích obrázky zobrazují přes "virtuální" adresář "system", tedy např. /system/files/IMG_0100.JPG. Toto funguje bez problémů, tedy tento obrázek se zobrazí jen uživatelům, kteří jsou oprávnění se na obrázek koukat. Současně "přirozený" adresář /sites/default/files/internal (to internal jsem nadefinoval já jako adresář pro privátní soubory) je přes webový prohlížeč nepřístupný (díky .htaccess), což je správně.
Problém je s tím, že náhledy obrázky (thumbnail, medium, large), které chci využívat, se ukládají do adresářů /sites/default/files/internal/styles/thumbnail/private, resp. medium/private a large/private. Ty jsou samy o sobě nepřístupné, ovšem obrázky z nich lze neautorizovaným uživatelům zobrazit hned dvěma způsoby:
1. Přes /system/files/styles/thumbnail/private/IMG_0100.JPG
2. Přes /sites/default/files/styles/thumbnail/private/IMG_0100.JPG (nechápu moc smysl této cesty - reálně v souborovém systému neexistuje)
Hledal jsem něco o tomto problém, ale zdá se, že všichni spíše řeší problém, že obrázky nelze zobrazit, než že se zobrazují, když nemají :-)
Máte někdo typ, co s tím?
Děkuji moc.
Radek
Dobrý den,
děkuji, ale bojím se, že tohle nepomůže (i když to mohu vyzkoušet). Problém NENÍ v tom, že se prohlížeč dostane k privátním obrázkům přes cestu existující v souborovém systému (což by řešilo umístění souborů mimo složku pro webové stránky). Zobrazování resp. nezobrazování souborů přes tyto cesty funguje naprosto korektně (díky .htaccess).
Problém JE v tom, že Drupal podle mého názoru špatně řeší přístup k náhledům obrázků ve složce styles, ale přes "virtuální" cesty, které si sám vytváří (např. /system/...) - v čemž mu asi nezabrání přesunutí zdrojových obrázků někam jinam.
Aha, chápu. Podle všeho to měl opravit Drupal 7.13 teď v květnu, viz SA-CORE-2012-002.
Prima, díky za nasměrování, jsem rád, že je to aspoň známý problém.
Smutnější je to, že na webu běží verze 7.14 a opravené to buď není, nebo se chyba vrátila (verzi 7.13 nikde nemám). Zkusím to dál prozkoumat.
Dobrý den, to se řeší tak, že privátní složka není fyzicky umístěna v sites/default/files, ale úplně mimo souborovou strukturu Drupalu. Takže v nastavení cesty k ní byste mohl uvést něco jako ../private-files. No a na serveru pak máte v nějakém umístění složku drupal s Drupalem a vším okolo a vedle ní na stejné úrovni složku private-files. Z toho vyplývá, že není dostupná přes prohlížeč. Zároveň však musíte na serveru nastavit práva tak, aby Drupal byl schopen do této složky zapisovat, přestože není v jeho adresáři.