2010-12-31 18 views
6

Chciałbym sprawdzić, czy konto użytkownika jest aktywowane podczas logowania, ale składnik Auth ciasteczka dba o login w sposób, w jaki nie wiem jak kontrolować. Ciasto zasadniczo używa pustej funkcji logowania i nie mam pojęcia jak sprawdzić wartość User.active.cakephp niestandardowe warunki logowania

góry dzięki

Odpowiedz

11

AuthComponent ma właściwość do ustawiania takich właśnie warunków, zwanych $ userScope.

Wystarczy włączenie tej linii w swojej beforeFilter() Autentyczna bloku Setup:

$this->Auth->userScope = array('User.active' => true); 

Uwaga: Powyższe dotyczy ciasto 1.x. Do stosowania 2.x:

$this->Auth->scope = array('User.active' =>true); 

Następnie można zostawić puste metoda logowania i AuthComponent doda ten dodatkowy warunek podczas uwierzytelniania użytkowników.

można zobaczyć wszystkie dodatkowe właściwości tutaj: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

Jeśli nie to ten dodatkowy zakres, a następnie nieaktywnych użytkownicy nadal będą mogli zalogować się i trzeba by je wylogować się w swojej Metoda login() po sprawdzeniu.

0

Na kontrolerze użytkowników lub wszędzie tam, gdzie chcesz go umieścić (działanie, że linki formularz logowania do):

function login() { 
    if ($this->Session->read('Auth.User')) { 
     $active = $this->Auth->user('active'); 
     if ($active) { 
      //(do stuff) 
     } 
     else { 
      //(do other stuff) 
     } 
    } 
} 

ta zakłada, że ​​tam jest „aktywny” kolumna w tabeli użytkownika zawierająca true lub false (lub 1 lub 0). $ this-> Auth-> user() pozwala ci na dostęp do bieżących zalogowanych danych użytkownika. Więcej informacji tutaj: http://book.cakephp.org/view/1264/user

+0

Dziękuję za odpowiedź, ale jakoś nie zadziałało to dla mnie, a poza tym nie podoba mi się pomysł, aby pozwolić użytkownikowi zalogować się a następnie wylogować go, jeśli nie jest aktywny. Ale i tak dzięki ;) – Elwhis