Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] Zend_Auth, dwa typy użytkowników
Forum PHP.pl > Forum > PHP > Frameworki
taro
Witam.

Mam taki problem.

Robię logowanie za pomocą Zend_Auth. W systemie mam jednak dwa typy użytkoników.

W jaki sposób rozdzielić te dwa typy korzystając z Zend_Auth.

Na przykład chciałbym, aby dane akcje mogły być uruchamiane tylko przez jeden typ użytkowników, zaś inne nie.

Dodam, że będą dwa oddzielne logowania, dwie oddzielne tabele itp.
Czy pozostaje mi tylko Zend_Acl, czy można to zrobić jakoś inaczej?

Bo teraz
$auth = Zend_Auth::getInstance();
if($auth->hasIdentity()) {
$this->_redirect('/costam/');
}

ładnie działa, ale jak będę miał dwa typy użytkowników to jak to sprawdzić, połączyć itp?

Dodam, że będą tylko dwa typy użytkowników + admin. Admin będzie miał w ogóle inny panel i nie potrzebuje dostępu do tych dwóch typów użytkownika. Każdy z użytkowników też będzie miał inny panel, zatem zastanawiam się czy trzeba bawić się w Zend_Acl, czy jest jakieś prostsze rozwiązanie?
Pilsener
Jeśli nie musisz przypisywać określonych zasobów systemowych danej roli to nie musisz korzystać z ACL, wystarczy sprawdzić typ użytkownika w sesji. Oczywiście warto zadać sobie pytanie, czy system uprawnień będzie kiedyś musiał zostać rozbudowany.
zend
Zend_Acl jest proste i przyjemne, jeśli z niego skorzystasz to szybko docenisz jego zalety. Kod który możesz użyć:
Kod
//autoryzacja
$auth = Zend_Auth::getInstance();
$result = $auth -> authenticate($adapter);

if($result -> getCode() != Zend_Auth_Result::SUCCESS)
{
    $this -> _msg($result -> getMessages() , 'error');
    return;
}
$storage = $auth -> getStorage();
$storage -> clear();
$storage -> write(new Users_Auth_Result($adapter -> getResultRowObject(null , 'password')));


Stwórz obiekt Users_Auth_Result i w nim metodę getRole(), używasz tego tak:
Kod
if($auth -> hasIdentity())
{
      $role = $auth -> getIdentity() -> getRole();
      //spr w Zend_Acl czy dana rola ma dostęp do zasobu
}
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.