[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