mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Merge branch 'auth-logout' into 2.0
This commit is contained in:
commit
81a2563a05
3 changed files with 34 additions and 1 deletions
|
@ -98,6 +98,18 @@ abstract class BaseAuthenticate {
|
|||
*/
|
||||
abstract public function authenticate(CakeRequest $request, CakeResponse $response);
|
||||
|
||||
/**
|
||||
* Allows you to hook into AuthComponent::logout(),
|
||||
* and implement specialized logout behaviour.
|
||||
*
|
||||
* All attached authentication objects will have this method
|
||||
* called when a user logs out.
|
||||
*
|
||||
* @param array $user The user about to be logged out.
|
||||
* @return void
|
||||
*/
|
||||
public function logout($user) { }
|
||||
|
||||
/**
|
||||
* Get a user based on information in the request. Primarily used by stateless authentication
|
||||
* systems like basic and digest auth.
|
||||
|
|
|
@ -516,6 +516,9 @@ class AuthComponent extends Component {
|
|||
|
||||
/**
|
||||
* Logs a user out, and returns the login action to redirect to.
|
||||
* Triggers the logout() method of all the authenticate objects, so they can perform
|
||||
* custom logout logic. AuthComponent will remove the session data, so
|
||||
* there is no need to do that in an authentication object.
|
||||
*
|
||||
* @param mixed $url Optional URL to redirect the user to after logout
|
||||
* @return string AuthComponent::$loginAction
|
||||
|
@ -524,6 +527,13 @@ class AuthComponent extends Component {
|
|||
*/
|
||||
public function logout() {
|
||||
$this->__setDefaults();
|
||||
if (empty($this->_authenticateObjects)) {
|
||||
$this->constructAuthenticate();
|
||||
}
|
||||
$user = $this->user();
|
||||
foreach ($this->_authenticateObjects as $auth) {
|
||||
$auth->logout($user);
|
||||
}
|
||||
$this->Session->delete(self::$sessionKey);
|
||||
$this->Session->delete('Auth.redirect');
|
||||
return Router::normalize($this->logoutRedirect);
|
||||
|
|
|
@ -1061,6 +1061,17 @@ class AuthTest extends CakeTestCase {
|
|||
$this->assertNull($this->Auth->Session->read('Auth.redirect'));
|
||||
}
|
||||
|
||||
public function testLogoutTrigger() {
|
||||
$this->getMock('BaseAuthenticate', array('authenticate', 'logout'), array(), 'LogoutTriggerMockAuthenticate', false);
|
||||
|
||||
$this->Auth->authenticate = array('LogoutTriggerMock');
|
||||
$mock = $this->Auth->constructAuthenticate();
|
||||
$mock[0]->expects($this->once())
|
||||
->method('logout');
|
||||
|
||||
$this->Auth->logout();
|
||||
}
|
||||
|
||||
/**
|
||||
* test mapActions loading and delegating to authorize objects.
|
||||
*
|
||||
|
|
Loading…
Reference in a new issue