Thruway\Authentication\AuthenticationManager::onAuthenticateHandler PHP Метод

onAuthenticateHandler() приватный Метод

Call the handler that was registered to handle the Authenticate Message
private onAuthenticateHandler ( $authMethod, $authMethodInfo, Realm $realm, Session $session, Thruway\Message\AuthenticateMessage $msg )
$authMethod
$authMethodInfo
$realm Thruway\Realm
$session Thruway\Session
$msg Thruway\Message\AuthenticateMessage
    private function onAuthenticateHandler($authMethod, $authMethodInfo, Realm $realm, Session $session, AuthenticateMessage $msg)
    {
        $onAuthenticateSuccess = function ($res) use($realm, $session) {
            if (count($res) < 1) {
                $session->abort(new \stdClass(), "thruway.error.authentication_failure");
                return;
            }
            // we should figure out a way to have the router send the welcome
            // message so that the roles and extras that go along with it can be
            // filled in
            if ($res[0] == "SUCCESS") {
                $welcomeDetails = new \stdClass();
                if (isset($res[1]->authid)) {
                    $session->getAuthenticationDetails()->setAuthId($res[1]->authid);
                } else {
                    $session->getAuthenticationDetails()->setAuthId('authenticated_user');
                }
                $authRole = 'authenticated_user';
                $session->getAuthenticationDetails()->addAuthRole($authRole);
                if (isset($res[1]->authroles)) {
                    $session->getAuthenticationDetails()->addAuthRole($res[1]->authroles);
                }
                if (isset($res[1]->authrole)) {
                    $session->getAuthenticationDetails()->addAuthRole($res[1]->authrole);
                }
                if (isset($res[1]->_thruway_authextra)) {
                    $session->getAuthenticationDetails()->setAuthExtra($res[1]->_thruway_authextra);
                }
                if (isset($res[1]) && is_object($res[1])) {
                    $res[1]->authrole = $session->getAuthenticationDetails()->getAuthRole();
                    $res[1]->authroles = $session->getAuthenticationDetails()->getAuthRoles();
                    $res[1]->authid = $session->getAuthenticationDetails()->getAuthId();
                    foreach ($res[1] as $k => $v) {
                        $welcomeDetails->{$k} = $v;
                    }
                }
                $session->setAuthenticated(true);
                $session->sendMessage(new WelcomeMessage($session->getSessionId(), $welcomeDetails));
            } elseif (isset($res[0]) && $res[0] == "FAILURE") {
                $this->abortSessionUsingResponse($session, $res);
            } else {
                $session->abort(new \stdClass(), "thruway.error.authentication_failure");
            }
        };
        $onAuthenticateError = function () use($session) {
            Logger::error($this, "onauthenticate rejected the promise");
            $session->abort(new \stdClass(), "thruway.error.unknown");
        };
        $extra = new \stdClass();
        $extra->challenge_details = $session->getAuthenticationDetails()->getChallengeDetails();
        $arguments = new \stdClass();
        $arguments->extra = $extra;
        $arguments->authid = $session->getAuthenticationDetails()->getAuthId();
        $arguments->challenge = $session->getAuthenticationDetails()->getChallenge();
        $arguments->signature = $msg->getSignature();
        $arguments->authmethod = $authMethod;
        $arguments->hello_message = $session->getHelloMessage();
        // now we send our authenticate information to the RPC
        $onAuthenticateHandler = $authMethodInfo['handlers']->onauthenticate;
        $this->session->call($onAuthenticateHandler, [$arguments])->then($onAuthenticateSuccess, $onAuthenticateError);
    }