User

Třída User vám pomůže s realizací kontroly přístupových práv, přihlášením a odhlášením uživatele.

Začněte jednoduše vytvořením třídy User. Jako první parametr contructoru můžete volitelně předat název nebo instanci UserHandleru, jako druhý parametr pak instanci třídy Permission.

UserHandler je autentizační objekt, který bude ověřovat uživatelské údaje. Tato třída musí implementovat rozhraní IUserHandler – musí implementovat dvě metody, první metoda authenticate, který vrací uživatelovu identitu, nebo chybové konstanty, druhou metodou je metoda updateIndentity.

class UserHandler implements IUserHandler
{
    public function authenticate($username, $password)
    {
        if ($username != ...)
            return User::INVALID_USERNAME;

        if ($password != ...)
            return User::INVALID_PASSWORD;


        return new Identity($userId, $userRole, array(
             'key' => 'some value',
        ));
    }


    public function updateIdentity($id)
    {
        # dohledani novych uzivatelovych udaju podle jeho $id
        return new Identity($userId, $userRole, array(
             'key' => 'some value',
        ));
    }
}

Metoda může vracet následující chybové konstanty:

  • User::INVALID_CREDENTIALS – nejobecnější, použijte, pokud nechcete uživatele informovat o tom, co zadal špatně
  • User::INVALID_USERNAME
  • User::INVALID_PASSWORD
  • User::UNAUTHORIZED_USER

V případě, že uživatel zadal své přihlašovací údaje správně, je nutné vrátit jeho identitu. K tomu využijte třídy Identity. Této třídě předáte do contructoru primární klíč uživatele (pro jeho pozdější dohledání), jméno uživatelovi role a dále nepovinné pole s jeho dalšími osobními údaji, které budete v aplikaci potřebovat.

Jak je vidět z ukázky, třída UserHandler implementuje ještě povinně druhou metodu updateIdentity. Tato metoda slouží k aktualizaci uživatelových dát. Dané metodě je předána hodnota uživatelova primárního klíče, který je právě povinný z těchto důvodů.

V následující ukázce vidíte použití základních metod.

$user = new User();
$user->setUserhadnler('UserHandler');


# prihlaseni
$user->authenticate('username', 'password');

# odhlaseni
$user->signOut();

# je uzivatel prihlasen?
if ($user->isAuthenticate()) {
...

# aktualizace identity
$user->updateIndentity();

Pokud využíváte i třídu Permission, pak jednoduše můžete používat i metody isAllowed().

$permission = new Permission;
...

$user = new User('UserHandler', $permission);
if ($user->isAllowed('posts', 'read')) {
...

Jak vidíte, třída User automaticky volá metody třídy Permission a dosazuje do nich roli daného přihlášeného uživatele.