Jak byste řešili oprávnění k souborům?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Pitrsonek
Člen | 13
+
0
-

Ahoj
řeším v diplomce ošetření přístupu k dokumentům (DOC, PDF, atd.) někdo má právo editovat, odstranit, stáhnout si daný soubor. Proto bych poprosil chytré hlavy o jejich názor, jak by řešili daný problém.

Dejme tomu, že v administraci se vytvoří stránka ke které se přiloží nějaké dokumenty. Ke stránce má přístup jen daná skupina uživatelů která se definuje, když je stránka veřejně přístupná zaškrtne se že je přístupná už. roli návštěvník jinak bude přístupná jen administrátorovi atd. s tím souvisí i oprávnění pro dané soubory, které by se měli automaticky nastavit podle oprávnění stránky a stejně tak aby bylo možné nahrávat samostatně soubory a jim definovat oprávnění.

Napadlo mě řešit to stejne jako je ACL pro řízení přístupu k funkcím apliakce, pro každý soubor by se definovala oprávnění pro danou roly základní operace jsou (read, delete, edit).

Jak bych řídil přístup k souborům

  1. Uživatel je přihlášen podle už. role se mu zobrazí přístupné stránky a jestliže má přístup i k přiloženým souborům zobrazí se jejich seznam a odkazy na soubory.
  2. Když uživatel klikne na soubor, zavola se skript který z DB zjistí jestli daný uživatel má oprávnění pro danou operaci (stažení ~ čtení dokumentu).
  3. Jestliže má oprávnění pro danou operaci uživateli se pošle hlavička se souborem a má možnost si soubor stáhnout. (viz. Jakub Vrána, Stažení souboru po ověření práv: http://php.vrana.cz/…eni-prav.php)

Proces přidávání dokumentů

  • Dokumenty bude možné přidávat i samostatně a ze stránek na ně odkazovat
  • Dokumenty bude možné přidávat při vytváření stránky, takže při ukládání stránky bude nutné převzít nastavené oprávnění stránky a automaticky ho nastavit novým dokumentům nebudeli nastavené jiné oprávnění u dokumentů.

Co si myslíte o tomto řešení, navrhli byste to jinak?
Děkuji za podměty.
-
-

Petr Motejlek
Člen | 293
+
0
-

Já to používám víceméně tak, jak píšeš. Akorát nepoužívám pro servírování těch souborů PHP, ale rozšíření XSendFile (je to rozšíření do Apache a LightHTTPd). Funguje to tak, že stačí v PHP skriptu nastavit hlavičku Content-Type a X-SendFile. Server se po skončení PHP skriptu už sám postará o odeslání souboru klientovi – nemusím na úrovni PHP řešit Accept-Range, atd.