public function testIssue1_AuthenticateFailsWithErrors() { $wt = new WatchTower(); $wt->watch(new Sentry\Authentication\Callback('auth', function (Event $e) { $e->triggerError(Sentry\Sentry::INVALID, 'Not valid'); $e->stopPropagation(); })); $identity = $wt->authenticate('superman', 'lois lane'); self::assertTrue($identity->hasErrors()); self::assertFalse($identity->isAuthenticated()); }
use WatchTower\WatchTower; use WatchTower\Event\Event; $wt = new WatchTower(); $users = new \WatchTower\Sentry\Identification\InMemory('id'); $users->add('superman', (object) ['name' => 'Khalel', 'alias' => 'clark kent']); $wt->watch($users); $wt->watch(new \WatchTower\Sentry\Authentication\Callback('auth', function (Event $event) { $identity = $event->identity(); if ($identity->isIdentified()) { $cred = $identity->credential(); if (!empty($cred) && $cred === 'password') { return; } $event->triggerError(\WatchTower\Sentry\Sentry::INVALID, "Invalid username or password"); } })); // fails authentication and identification $identity = $wt->authenticate("bizarro", 'forever man'); if ($identity->isIdentified() === false) { echo 'Failure: ' . join(', ', $identity->getErrors()) . "<br>\n"; } // fails authentication, but identification is succesful $identity = $wt->authenticate("superman", "the ice fortress"); if ($identity->isAuthenticated() === false) { echo 'Failure: ' . join(', ', $identity->getErrors()) . "<br>\n"; } // passed $identity = $wt->authenticate("superman", "password"); if ($identity->isAuthenticated()) { echo "Success! Welcome {$identity->identified()->alias}.<br>\n"; }