Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [skrypt]Actinium.Auth - Kontrola dostępu
Forum PHP.pl > Inne > Oceny
Ludvik
Jakiś czas temu na forum wywiązała się dyskusja o kontroli dostępu, w której przedstawiłem swój pomysł rozwiązania tego problemu. Jako, że czasu nie miałem za dużo, a tymbardziej zapału do pracy, to teraz prezentuję mniej więcej działający kod. W pliku znajduje się automatycznie wygenerowania dokumentacja z kodu, opisy pakietów auth, context, logic (wszystkie są wymagane + exceptions), sam kod oraz testy pakietu auth, które być może pomogą w zrozumieniu jak to działa.

Do działania potrzebny jest autoloader, który dołączyłem do paczki.

Aby wykonać testy potrzebna będzie odpowiednio wypełniona baza. Skrypty wypełniające są w katalogu z testami.

Wszystko testowałem u siebie póki co pod Windowsem XP, Apache 2.0, php 5.1, PostgreSQL 8.1. Wymagane jest PDO.

Jest to raczej wersja beta, prawdopodobnie trochę się zmieni. Jak wszystko będzie pozytywnie ocenione to dopiszę kilka klas do baz danych.

Liczę na wytrwałych i z góry dziękuję za opinie smile.gif

actinium.tar.gz
Fipaj
Kod ładnie napisany, udokumentowany. Pomysł dobry smile.gif Wykonanie fajne smile.gif

Jeszcze nie wgryzłem się w cały skrypt, ale ogólnie już mogę powiedzieć: kawał dobrej roboty smile.gif

Szkoda jednak, że tak bardzo się rozpisałeś smile.gif To jest, przynajmniej dla mnie, zbyt duże.

minusika dostajesz za postgresa tongue.gif
Ludvik
No niestety, mam takie samo zdanie - za dużo kodu trochę. Ale taka cena elastyczności... Kod który robi tak dużo nie może być krótki i zwięzły. Mam nadzieję, że cache kodu zenda zrobi swoje z wydajnością smile.gif Co do obsługi baz danych, to przyjdzie czas, że pojawią się nowe sterowniki i przetestuję to na innych serwerach. Zaraz dorzucę opis testu AccessControllera, żeby można było rozszyfrować jak to działa bez uruchamiania wszystkich testów.

Ogólnie to wielkie dzięki za opinię smile.gif

EDIT: Dodałem opis testu AccessControllera - Prowizoryczny opis kontroli dostępu na forum.
nasty
Kod jest ladny i "pro", ale ja sie zgodze z @fipaj, troche za bardzo sie rozpisales tongue.gif
hwao
Odrazu widac ze to nie "autoryzacja" tylko czesc frameworka smile.gif
Sama autoryzacja jest całkiem mala, wyglada na napisana ciekawie juz troche pozno to niezbyt mi mozg FUNCkIONuje smile.gif jak nie zapomne, napisze coś z rana smile.gif
Jarod
Przeglądałem strukturę bazy i jeśli dobrze zrozumiałem jej założenia, to nie spełnia warunków pierwszej postaci normalnej.
NuLL
[OT]I co z tego wynika ? biggrin.gif[/OT]

laugh.gif
Jarod
Cytat(NuLL @ 14.04.2007, 14:20:06 ) *
[OT]I co z tego wynika ? biggrin.gif[/OT]

laugh.gif

Że można było zaprojektować ją lepiej (chyba potrafisz wyciągnąć proste wnioski..).

[OT]Coraz częściej czytając Twoje wypowiedzi odnosze wrażenie jakbyś miał 15lat biggrin.gif[/OT]
laugh.gif
DeyV
Jarod - a ja myślę, że akurat w tym przypadku pytanie null mogło mieć zupełnie inny cel.
Co prawda nie zaglądałem do kodu i do bazy, więc nie wiem, czy nie pojawiają się tam jakieś bardzo wyraziste błędy, ale jak sądzę, null chciał przypomnieć, że zazwyczaj po normalizacji bazy danych, przeprowadza się proces kontrolowanej denormalizacji, w celu podniesienia wygody pracy lub/i wydajności.
Jarod
Cytat(DeyV @ 26.04.2007, 08:10:00 ) *
(...)a ja myślę, że akurat w tym przypadku pytanie null mogło mieć zupełnie inny cel.

Nie mam czasu zastanawiać się co miał na myśli NULL winksmiley.jpg Powinien napisać o co mu chodzi.

Cytat(DeyV @ 26.04.2007, 08:10:00 ) *
Co prawda nie zaglądałem do kodu i do bazy, więc nie wiem, czy nie pojawiają się tam jakieś bardzo wyraziste błędy, ale jak sądzę, null chciał przypomnieć, że zazwyczaj po normalizacji bazy danych, przeprowadza się proces kontrolowanej denormalizacji, w celu podniesienia wygody pracy lub/i wydajności.

Dla jednego może być wyrazisty błąd dla innego nie. Mi się udało zrobić to poprawnie i też wydajnie. Zresztą każdy pisze jak chce.

pzdr
Ludvik
Dzięki Jarod za uwagę smile.gif Sorki, że odpowiadam prawie po miesiącu, ale taka już sytuacja...

Pola roles and parameters są praktycznie niepodzielne, gdyż nie są one zwykłą listą ról/parametrów tylko warunkiem logicznym opisującym je. Przykład zawartości pojedynczej komórki:

Kod
(browseForum & viewTopic & addPost) | administrate


Oczywiście można zrobić z tego drzewko w bazie, ale stwierdziłem, że to trochę mija się z celem. Tak jak powiedział DeyV, może to nie być zgodne z 1NF, ale nie widziałem innego wygodnego wariantu implementacji logiki.

Jeszcze raz dzięki za uwagi, jestem otwarty na pomysły smile.gif
Jarod
@Ludvik: uważam, że odwaliłeś kawał dobrej roboty. Wzorowałem się trochę na Twoim sposobie (wyorzystałem parametryzowanie). Ja trochę inaczej podszedłem do sprawdzania uprawnień. U mnie każda rola posiada jakiś parametr (co najmniej jeden a może wiele). Wiem, że czasem trzeba przeprowadzić normalizację ale napisałem, że w tym przypadku dało się zrobić to lepiej. Poza tym tak jak pisałem każdy pisze po swojemu. To była taa moja uwaga.
pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.