Laravel 9 cookie box 18+

Przedstawiam wam cookie box 18+ łatwy do wdrożenia i zastosowania dzięki Laravel 9.

Zastanawiałem się od pewnego czasu jak zabezpieczyć kategorie w laravel 9 cookie box 18+, a bardziej jak informować wchodzących tam użytkowników, że jest to treść tylko dla osób 18+. Mogą to być nie tylko kategorie związane z sexem ale także gry Hazardowe albo jakieś treści do których nie powinny zaglądać osoby poniżej 18 lat. Stworzyłem to dzięki wykorzystaniu takich technik programowania jak bootstrap 5, javascript, css, jquery, no i oczywiście Laravel 9.

Konsola cmd

Stworzę dzięki narzędzia konsoli nowy Middlewar nazwę go Cookie18Middleware

Konsola Laravel
Konsola Laravel

w nim umieścimy  potrzebne dane do wprowadzenia na stronie. Otwieramy utworzony plik. Przypisujemy metodę tak jak to miało miejsce w cookis w poprzednim poście cookies pobieramy widok z funkcji $r->getContent();

funkcja Middleware
funkcja Middleware

Kolejną czynnością jaką wykonam to utworzę zmienną pomocniczą dla przechowywania naszej nazwy cookie chcę aby ona występowała tylko w tej metodzie dlatego ograniczyłem się do zmiennej, a nie stałej choć także można ją tak zapisać, nazwałem ją $ciastko_18. Następnie utworzę tablicę do przechowywania wartości szyfrowanych cookie, na podstawie tych wartości będziemy odczytywać je i przekazywać do widoku. Zakodujemy także w md5 adres IP odwiedzającego w celu jego weryfikacji w późniejszym kodzie widoku przekazanym dzięki tablicy i to w zasadzie wszystko zobaczcie jak wygląda całość Klasy Cookie18Middleware.

handle middleware
handle middleware

Widok blade

Jeżeli już mamy napisany kod dla Cookie18Middleware to teraz przejdźmy do widoku, jak popatrzycie na obrazek powyżej to zobaczycie gdzie znajduje się nasz widok, czyli jest w folderze index, a nazywa się cookie18.blade.php.

Tutaj standardowo ustawimy style dla przeźroczystości opacity i z-index ustawiający całego boxa modal najbliżej widoku odwiedzającego stronę do tego centrowanie tekstu i panding dla odpowiedniego rozmieszczenia na stronie. Użyłem tutaj modal bootstrapa ładnie wtapia się w tło strony i ma odpowiednie funkcje, które będę używał w przyszłości.

widok blade
widok blade

Napisałem też kawałek kodu jQuery do obsługi tego boxa nie będę się rozpisywał działa podobnie jak ten w Cookie post do wglądu. Opiszę jedynie mechanikę działania resztę zobaczycie w kodzie.

Podczas wejścia na odpowiednią stronę otwiera się okno dzięki .modal(‘show’) wyłączam kliknięcie w niego popzez .off ponieważ box by się zamykał następnie ustawiam tablice PHP pod stałe javascript jeżeli wchodzący chce zrezygnować z odwiedzenia strony przekierowuję go do obojętnie jakiej strony ja wpisałem google.pl a ty możesz wpisać co chcesz nie ustawiam cookie dla tej osoby. Jeżeli natomiast osoba chce pozostać na stronie i kliknie w taki button to ustawiam cookie na rok możesz to zmienić w tym miejscu + ’; max-age=’+(360 * 24 * 60 * 60) 360 oznacza ilość dni ważności cookie jeżeli chcesz zmniejszyć ich ilość dni na np. 30 dni to zamiast 360 wpisujesz 30 proste. Reszta parametrów opisanych jest w wcześniejszym poście dotyczącym cookie. To w zasadzie tyle z widoku teraz przejdźmy do ustawień midleware.

scrypt jQuery cookie
scrypt jQuery cookie

Karnel routeMiddleware

Jeżeli chcesz przypisywać tego boxsa tylko do poszczególnych stron swojego serwisu lub kategorii to wystarczy do pliku Karnel.php do tablicy $routeMiddleware = []; dopisać na końcu nazwę naszego ciastka i miejsce gdzie dodaliśmy nasz Cookie18Middleware.

Laravel Karnel
Laravel Karnel

Ważne jest aby ta nazwa była rozpoznawalna i odzwierciedlała konkretnie box cookie ponieważ w razie rozwoju twojej strony w route może pojawić się więcej takich nazw, zobaczysz później w pliku web.php.

Middleware EncryptCookies

Ważną rzeczą, którą należy wykonać dla prawidłowego działania naszych cookie jest sam fakt, że Laravel zabezpiecza je i w celu ich widoczności musimy je wskazać programowi, ażeby uznał je za bezpieczne. Robimy to w pliku EncryptCookies.php przypisując naszą nazwę ciastka do tablicy $except =[]; i po tej operacji Laravel będzie je widział i pozwalał na pracę z nimi.

EncrypCookie nazwa
EncrypCookie nazwa

Widzimy na obrazku powyżej, że są do tablicy przypisane dwie wartości pierwsza została wpisana wcześniej i odpowiada za politykę prywatności, a druga za box.

Route web

Pozostaje nam teraz tylko ustawić nasz middlewar w samym routinu tak ażeby wskazywał na miejsca gdzie ma się aktywować po wejściu na dany adres.  Robimy to w łatwy sposób przypisując w middlewar adresu nazwę przypisaną wcześniej w Karnelu i to wszystko. Jeżeli chcemy mieć kilka adresów zabezpieczonych boxem to powtarzamy czynność osobno dla każdego z nich.

route web
route web

Efekt kończący naszą pracę zobaczysz wchodząc na adres przypisany do ->middleware(’cookie_18Box’)

cookie_18 Box
cookie_18 Box

Laravel dok

Bootstrap 5 modal

Download GitHub

Add a Comment