Flarum\Forum\Controller\LogInController::handle PHP Method

handle() public method

public handle ( Psr\Http\Message\ServerRequestInterface $request ) : JsonResponse | EmptyResponse
$request Psr\Http\Message\ServerRequestInterface
return Zend\Diactoros\Response\JsonResponse | Zend\Diactoros\Response\EmptyResponse
    public function handle(Request $request)
    {
        $actor = $request->getAttribute('actor');
        $body = $request->getParsedBody();
        $params = array_only($body, ['identification', 'password']);
        $response = $this->apiClient->send(TokenController::class, $actor, [], $params);
        if ($response->getStatusCode() === 200) {
            $data = json_decode($response->getBody());
            $session = $request->getAttribute('session');
            $this->authenticator->logIn($session, $data->userId);
            $token = AccessToken::find($data->token);
            event(new UserLoggedIn($this->users->findOrFail($data->userId), $token));
            $response = $this->rememberer->remember($response, $token, !array_get($body, 'remember'));
        }
        return $response;
    }

Usage Example

 /**
  * {@inheritdoc}
  */
 public function __invoke(Request $request, Response $response, callable $out = null)
 {
     try {
         $this->assertAdminAndSudo($request);
     } catch (Exception $e) {
         if ($request->getMethod() === 'POST') {
             $response = $this->logInController->handle($request);
             if ($response->getStatusCode() === 200) {
                 return $response->withStatus(302)->withHeader('location', app('Flarum\\Admin\\UrlGenerator')->toRoute('index'));
             }
         }
         return new HtmlResponse($this->view->make('flarum.admin::login')->with('token', $request->getAttribute('session')->get('csrf_token'))->render());
     }
     return $out ? $out($request, $response) : $response;
 }
LogInController