[Warszawa-pm] [Catalyst] obsługa aktywacji użytkownika
Zbigniew Lukasiak
zzbbyy w gmail.com
Nie, 2 Sty 2011, 03:36:54 PST
2011/1/2 Maciej Grzybek <mashester w gmail.com>:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> W dniu 02.01.2011 10:54, Zbigniew Lukasiak pisze:
>> Niestety już dawno się tym nie zajmowałem. Może trzeba by po prostu
>> dodać jedno sprawdzenie w kontrolerze (czy co tam obsługuje formularz
>> login) - albo może użyć Realm (chociaż nigdy nie rozumiałem o co
>> chodzi z tymi Realm i czym to się różni od roli). Pytanie jest czy
>> authenticate nie powinno zwracać jakiegoś kodu przyczyny albo coś.
>> Problem jest ciekawy (kiedyś będę się musiał zmierzyć z napisaniem
>> bibliotek do autentykacji w WebNano - więc jestem bardzo
>> zainteresowany rozwiązaniem go) i proponowałbym wysłać to na listę
>> Catalysta.
>>
>>
>>
>> Pozdr.
>> Zbyszek
>> _______________________________________________
>> Warszawa-pm mailing list
>> Warszawa-pm w pm.org
>> http://mail.pm.org/mailman/listinfo/warszawa-pm
>>
>
> Realm? Wydaje mi się, że tego nie da się użyć przy tym problemie.
> Wg mnie najrozsądniej byłoby, gdyby authenticate zwracało kod błędu, na
> podstawie którego można byłoby wywnioskować co nie przypasowało do
> usera, aby go zalogować.
> W Catalyst Advent Calendar pisali o możliwości zrobienia czegoś takiego:
>
> sub login : Local {
> my ( $self, $c ) = @_;
>
> if ($c->authenticate( {
> username =>
> $c->request->params->{'username'},
> password => $c->request->params->{'password'},
> status => [ 'registered', 'active' ]
> } )) {
> # display the login successful page here.
> } else {
> # display the 'try again' page here.
> }
> }
>
> gdzie array pełni rolę tablicy ORów (wystarczy by dowolny z warunków był
> spełniony), ale, jak wiadomo, nie jest to zadowalające, bo nie możemy
> sprawdzić, czy logowanie wysypało się na sprawdzeniu username + password
> czy na arrayu. Rozwiązaniem, które już byłoby zadowalające byłoby być
> może zwrócenie, który z argumentów nie pasował. Tylko jak to sprawdzić?
> Póki co na #catalyst @irc.perl.org nikt nie znalazł rozwiązania. ;)
No tak - z tym realm to chyba jednak nie. Ale może wystarczyłoby po
prostu po if( $c->authenticate( $user, $password) ) dodać następny if
sprawdzający czy $c->user jest 'active' i jeśli nie to po prostu
wylogować go.
Kody błędów byłyby na pewno lepszym rozwiązaniem - zastanawiam się
tylko czy sprawdzanie 'active' na pewno należy do autentykacji.
--
Zbigniew Lukasiak
http://brudnopis.blogspot.com/
http://perlalchemy.blogspot.com/
Więcej informacji o liście Warszawa-pm