Link Search Menu Expand Document

class Pike\Auth\Authenticator

Autentikaation ja käyttäjänhallinnan julkinen API.

Synopsis

class Authenticator {

    /* Vakiot */
    const ACTIVATION_KEY_EXPIRATION_SECS = 60 * 60 * 24 ;
    const RESET_KEY_EXPIRATION_SECS = 60 * 60 * 2 ;
    const ACCOUNT_STATUS_ACTIVATED   = 0 ;
    const ACCOUNT_STATUS_UNACTIVATED = 1 ;
    const ACCOUNT_STATUS_BANNED      = 2 ;
    const CREDENTIAL_WAS_INVALID = 201010 ;
    const USER_ALREADY_EXISTED   = 201011 ;
    const FAILED_TO_FORMAT_MAIL  = 201012 ;
    const FAILED_TO_SEND_MAIL    = 201013 ;
    const KEY_HAD_EXPIRED        = 201014 ;
    const ACCOUNT_STATUS_WAS_UNEXPECTED = 201015 ;

    /* Metodit */
    public __construct ( callable $makeUserRepositoryFn, callable $makeSessionFn, callable $makeCookieStorageFn, string $userRoleCookieName = 'maybeLoggedInUserRole', bool $doUseRememberMe = true )
    public login ( string $usernameOrEmail, string $password, ?callable $convertUserToSessionData = null ) : void
    public loginByUserId ( string $userId, ?callable $convertUserToSessionData = null ) : void
    public getIdentity ( void ) : mixed|null
    public logout ( void ) : void
    public getAccountManager( ?callable $makeMailerFn = null ) : AccountManager
}

Metodit

__construct()

Luo uuden autentikaatio-API:n.

Signature

public function __construct ( callable $makeUserRepositoryFn, callable $makeSessionFn, callable $makeCookieStorageFn, string $userRoleCookieName = 'maybeLoggedInUserRole', bool $doUseRememberMe = true )

Esimerkit

$myCookieName = 'userRole';
$doUseRememberMe = true;
$auth = new Authenticator(
    function ($_factory): \Pike\Interfaces\UserRepositoryInterface {
        return new MyUserRepository();
    },
    function ($_factory): \Pike\Interfaces\SessionInterface {
        return new MySession();
    },
    function ($_factory): \Pike\Auth\Interfaces\CookieStorageInterface {
        return new MyCookieStorage();
    },
    $myCookieName,
    $doUseRememberMe
);

login()

Kirjaa käyttäjän:

  • Sessioon
  • Istunnon ajaksi kekseihin (jos konstruktorin $userRoleCookieName != ‘’)
  • Tietokantaan ja kekseihin (jos konstruktorin $useRememberMe = true)

Signature

public function login ( string $usernameOrEmail, string $password, ?callable $convertUserToSessionData = null ) : void

Esimerkit

Katso myös Autentikaatio > Käyttäjän kirjaaminen sisään.

$authenticator->login('user', 'pass', function (\Pike\Entities\User $user) {
    return (object) ['id' => $user->id, 'role' => $user->role];
});

loginByUserId()

Tekee saman kuin login(), mutta ei tarkasta salasanaa. Käytetään silloin, kun tunnistautuminen on jo suoritettu (kolmannen osapuolen autentikointitavat, esim. Facebook Login), ja käyttäjä halutaan vain kirjata sessioon.

Signature

public function loginByUserId ( string $userId, ?callable $convertUserToSessionData = null ) : void

Esimerkit

$otherAuth = (new Hybridauth([/*...*/]))->getAdapter('facebook');
if (!$otherAuth->authenticate())
    return 'You shall not pass';
if (!($user = $myUserRepo->getUser($otherAuth->getUserProfile()->email)))
    return 'User not recognized';
$authenticator->loginByUserId($user->id, function (\Pike\Entities\User $user) {
    return (object) ['id' => $user->id, 'role' => $user->role];
});

getIdentity()

Palauttaa sessioon tallennetut kirjautumistiedot. Mikäli käyttäjää ei löydy sessiosta (ja $useRememberMe = true), yrittää hakea tiedot kekseistä. Jos tietoja ei löydy yhtään mistään, palauttaa null.

Signature

public function getIdentity ( void ) : mixed|null

Esimerkit

Katso myös Autentikaatio > Käyttäjän kirjautumistietojen haku.

$myDataFromSession = $authenticator->getIdentity();

logout()

Poistaa:

  • Sessioon tallennetut tiedot
  • Kekseihin tallennetut tiedot (jos konstruktorin $userRoleCookieName != ‘’)
  • RememberMe-toiminnallisuuden tallentamat tiedot kekseistä ja tietokannasta (jos konstruktorin $useRememberMe = true)

Signature

public function logout ( void ) : void

Esimerkit

Katso myös Autentikaatio > Käyttäjän kirjaaminen ulos.

$authenticator->logout();

getAccountManager()

Palauttaa käyttäjänhallintatoiminnallisuuksien APIn, ks. Pike\Auth\AccountManager.

Signature

public function getAccountManager( ?callable $makeMailerFn = null ) : AccountManager

Esimerkit

$accountManager = $auth->getAccountManager(function (): \Pike\Interfaces\MailerInterface {
    return new \Pike\PhpMailerMailer;
});

Copyright © 2019-2021 ut4