Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MVC][CI] Dostęp do zasobu, Czy zalogowany może zobaczyć dany wpis
markonix
post
Post #1





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Sam nie wiem czy podchodzi do pod ACL ale ogólnie nie czuje potrzeby wydzielania warstwy dostępu dlatego chciałbym w prosty sposób weryfikować czy zalogowany użytkownik może zobaczyć np. dany wpis w bazie.

Przypuszczając, że w sesji mam ID zalogowanego, a wpis w bazie ma kolumnę z właścicielem (twórcą).
Aby utrudnić sprawę przyjmuje, że dostęp do wpisu ma też np. administrator.

No i teraz pytanie jak to kontrolować? Kontroler?
Praktycznie za każdym razem mam jakiś inny pomysł.

Od strony modelu:
Przykładowo gdy tworzę metodę "getWpis" dodaje dodatkowy parametr na ID z wartością domyślną NULL.
Gdy wartość ta nie jest NULL dodaje do zapytania WHERE z weryfikacją autora.
W przypadku gdy metoda jest użyta np. w panelu admina parametru nie przesyłam albo wysyłam NULL.
Sposób jest w miarę ok choć zawsze mam obawy, że jakiś użytkownik wywoła metodę z parametrem NULL - przykładowo gdzieś zapomnę weryfikować czy użytkownik jest zalogowany tym samym brak ID zalogowanego.

Robienie dodatkowej metody weryfikującej czy dany user ma dostęp do zasobu wydaje mi się czasochłonne.

Nie zależy mi na wyświetlaniu wyjątku iż nie ma dostępu do danego wpisu tylko po prostu brak elementu (powyższy sposób spełnia te założenie).

Jakieś porady? (korzystam z CI ale ten problem w sumie wraca dosyć często, nawet z strukturalnych aplikacjach).

Ten post edytował markonix 21.10.2012, 15:04:07
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
To był argument skierowany jak najbardziej przeciw obu sposobom.
Ok. (IMG:style_emoticons/default/smile.gif)

Każdy rightHandler to oddzielna klasa, która dziedziczy z klasy głównej.
W takiej klasie mam metody np:
CanEdit
CanRemove
CanPreview
itp w zależności od potrzeby. Dzięki temu mam porządek, dzięki temu jak coś się zmienia to wiem, że muszę to zmienić w danej klasie i że po zmianie zostanie łyknięte wszędzie bez zastanawiania w ilu miejscach tego użyłem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 05:59