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;
});