- Made workable with external instances, was previously too contrained to allow for such events
This commit is contained in:
		
							parent
							
								
									fed3bc7f85
								
							
						
					
					
						commit
						374b056754
					
				@ -30,15 +30,13 @@ class Authenticate {
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->session = $session;
 | 
			
		||||
        $this->cookie = $cookie;
 | 
			
		||||
        $this->authenticationEvent = $authenticationEvent ?: function(bool $authenticated, string $message, ? User $user, array $data = []) : bool {return false;} ;
 | 
			
		||||
        $this->authenticationEvent = $authenticationEvent ?: function(bool $authenticated, string $message, ? User $user, array $data = []) : ? bool {return null;} ;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function rememberMe(\Ulmus\Repository $repository) : ? User
 | 
			
		||||
    {
 | 
			
		||||
        $logUser = function(int $id) use ($repository) {
 | 
			
		||||
            if ( null === ( $user = $repository->loadFromPk($id) ) ) {
 | 
			
		||||
                $this->logout();
 | 
			
		||||
 | 
			
		||||
                throw new \Exception("User not found.");
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@ -63,7 +61,7 @@ class Authenticate {
 | 
			
		||||
        $this->session->destroy();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function authenticate(\Ulmus\Repository $repository, array $userLogin, ? string $password) : User
 | 
			
		||||
    public function authenticate(\Ulmus\Repository $repository, array $userLogin, string $password) : User
 | 
			
		||||
    {
 | 
			
		||||
        foreach($userLogin as $field => $value) {
 | 
			
		||||
            $repository->or($field, $value);
 | 
			
		||||
@ -78,7 +76,14 @@ class Authenticate {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ( $this->user->isLoaded() && ( call_user_func_array($this->authenticationEvent, [ false, 'verifyPassword', $this->user, [ 'password' => $password ] ]) || $this->user->verifyPassword($password) ) ) {
 | 
			
		||||
        if ( ! $this->user->isLoaded() ) {
 | 
			
		||||
            call_user_func_array($this->authenticationEvent, [ false, 'userNotFound', $this->user, [ 'user_login' => $userLogin, 'password' => $password ] ]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($this->user->isLoaded()) {
 | 
			
		||||
            $response = call_user_func_array($this->authenticationEvent, [ false, 'verifyPassword', $this->user, [ 'password' => $password ] ]);
 | 
			
		||||
 | 
			
		||||
            if ( $response !== null ? $response : $this->user->verifyPassword($password) ) {
 | 
			
		||||
                $this->user->logged = true;
 | 
			
		||||
 | 
			
		||||
                if ( $this->session ) {
 | 
			
		||||
@ -96,6 +101,11 @@ class Authenticate {
 | 
			
		||||
 | 
			
		||||
                call_user_func_array($this->authenticationEvent, [ false, 'invalidPassword', $this->user ]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ( ! $this->user->isLoaded() ) {
 | 
			
		||||
            call_user_func_array($this->authenticationEvent, [ false, 'authenticationFailed', $this->user, [ 'user_login' => $userLogin, 'password' => $password ] ]);
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        return $this->user;
 | 
			
		||||
    }
 | 
			
		||||
@ -113,7 +123,7 @@ class Authenticate {
 | 
			
		||||
            $this->cookie->delete('user.id');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->user && $this->user->logged = false;
 | 
			
		||||
        $this->user->logged = false;
 | 
			
		||||
 | 
			
		||||
        return $this;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user