Jak ustawić widzialność plików ?

0

Dodaje sobie zdjęcia w kodzie

$disk = Storage::disk('gcs');
$result = $disk->put($filePath, file_get_contents($file));
$disk->setVisibility($filePath, 'public');
$url = $disk->url($filePath);

Wtedy mam ustawione publiczne dostępy i na url można wejść i zobaczyć te zdjęcia.
Jak zrobić, żeby pliki miały dostęp niepubliczny ale że wybieram pliki z bazy i ustawiam do nich publiczny dostęp np na 5 minut. Jeśli po minucie odświeżę stronę to te same zdjęcia będą dostępne przez 5 minut po każdym odświeżeniu strony.

Miał ktos może z tym kiedyś do czynienia ?

0

To musisz tak zrobić że w ustawieniach serwera www, przechwytujesz URL do obrazka i zamiast serwować go bezpośrednio z serwera serwujesz przez PHP.

PHP po nazwie obrazka sprawdza do niego prawa i albo wypluwa dane binarne z odpowiednim nagłówkiem MIME np. image/jpeg albo nie.

Inna sprawa to cache obrazka w przeglądarce - ktoś zobacyz obrazek, przeglądarka to skeszuje i potem możesz sobie zablokować dostęp to nic nie da, i tak go zobaczy - chyba, że odpowiednio spreparujesz nagłówki HTTP.

Ja w tym stylu to robię kiedy pokazuję kody/klucze aktywacyjne gier i programów zakupionych przez klientów - tylko zalogowany klient który kupił dany klucz ma prawo zobaczyć obrazek na którym jest kod.

0

@TomRZ: Tak mi tez zalezy zeby to byl zalogowany uzytkownik i on widzi swoje zdjecia i swoje rzeczy wiec nawet jak mu to przegladarka skeszuje to spoko. Chodzi mi tylko o link do obrazka ze np jak skopiuje link i wklei to po 5 minutach ten link nie pokaze obrazka. A to czy sobie w ciagu tych 5 minut ktos skopiujej obrazek czy nagra telefonem ekran to na to sposobu nie ma

2

Skoro wybierasz plik z bazy to dodaj kolumne last_view i wstawiaj timestamp. Jakiś cron i odpytanie bazy i jak last_view większe niz 5 minut zmieniaj dostęp z publicznego.
Każda wizyta zmienia timsestamp na czas obecny.

1
chomikowski napisał(a):

@TomRZ: Tak mi tez zalezy zeby to byl zalogowany uzytkownik i on widzi swoje zdjecia [...]

Już Ci napisałem jak masz to zrobić - przez odpowiedni rewrite URL w ustawieniach serwera www, poszukaj sobie / poczytaj o tym.

1

Zasadnicze pytanie.

Chcesz żeby to Laravel serwował obrazki czy Twój serwer? Jeśli laravel to potraktuj te obrazki jak każdy inny zasób z ograniczonym dostępem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1