mirror of
https://github.com/flarum/core.git
synced 2025-07-26 03:01:22 +02:00
Use the new client class to consume API actions
This commit is contained in:
@@ -1,16 +1,27 @@
|
|||||||
<?php namespace Flarum\Forum\Actions;
|
<?php namespace Flarum\Forum\Actions;
|
||||||
|
|
||||||
|
use Flarum\Api\Client;
|
||||||
|
use Flarum\Support\Actor;
|
||||||
use Flarum\Support\HtmlAction;
|
use Flarum\Support\HtmlAction;
|
||||||
|
use Flarum\Forum\Events\RenderView;
|
||||||
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
use Session;
|
use Session;
|
||||||
use Auth;
|
use Auth;
|
||||||
use Config;
|
use Config;
|
||||||
use DB;
|
use DB;
|
||||||
use Flarum\Forum\Events\RenderView;
|
|
||||||
use Flarum\Api\Request as ApiRequest;
|
|
||||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
||||||
|
|
||||||
class IndexAction extends HtmlAction
|
class IndexAction extends HtmlAction
|
||||||
{
|
{
|
||||||
|
protected $apiClient;
|
||||||
|
|
||||||
|
protected $actor;
|
||||||
|
|
||||||
|
public function __construct(Client $apiClient, Actor $actor)
|
||||||
|
{
|
||||||
|
$this->apiClient = $apiClient;
|
||||||
|
$this->actor = $actor;
|
||||||
|
}
|
||||||
|
|
||||||
public function render(Request $request, $params = [])
|
public function render(Request $request, $params = [])
|
||||||
{
|
{
|
||||||
$config = DB::table('config')->whereIn('key', ['base_url', 'api_url', 'forum_title', 'welcome_title', 'welcome_message'])->lists('value', 'key');
|
$config = DB::table('config')->whereIn('key', ['base_url', 'api_url', 'forum_title', 'welcome_title', 'welcome_message'])->lists('value', 'key');
|
||||||
@@ -24,13 +35,11 @@ class IndexAction extends HtmlAction
|
|||||||
'token' => $request->getCookieParams()['flarum_remember'],
|
'token' => $request->getCookieParams()['flarum_remember'],
|
||||||
];
|
];
|
||||||
|
|
||||||
$response = app('Flarum\Api\Actions\Users\ShowAction')
|
$response = $this->apiClient->send('Flarum\Api\Actions\Users\ShowAction', ['id' => $user->id]);
|
||||||
->handle(new ApiRequest(['id' => $user->id], $this->actor))
|
|
||||||
->content->toArray();
|
|
||||||
|
|
||||||
$data = [$response['data']];
|
$data = [$response->data];
|
||||||
if (isset($response['included'])) {
|
if (isset($response->included)) {
|
||||||
$data = array_merge($data, $response['included']);
|
$data = array_merge($data, $response->included);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<?php namespace Flarum\Forum\Actions;
|
<?php namespace Flarum\Forum\Actions;
|
||||||
|
|
||||||
|
use Flarum\Api\Client;
|
||||||
use Flarum\Forum\Events\UserLoggedIn;
|
use Flarum\Forum\Events\UserLoggedIn;
|
||||||
use Flarum\Core\Repositories\UserRepositoryInterface;
|
use Flarum\Core\Repositories\UserRepositoryInterface;
|
||||||
use Flarum\Api\Request as ApiRequest;
|
|
||||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||||
|
|
||||||
class LoginAction extends BaseAction
|
class LoginAction extends BaseAction
|
||||||
@@ -11,25 +11,26 @@ class LoginAction extends BaseAction
|
|||||||
|
|
||||||
protected $users;
|
protected $users;
|
||||||
|
|
||||||
public function __construct(UserRepositoryInterface $users)
|
protected $apiClient;
|
||||||
|
|
||||||
|
public function __construct(UserRepositoryInterface $users, Client $apiClient)
|
||||||
{
|
{
|
||||||
$this->users = $users;
|
$this->users = $users;
|
||||||
|
$this->apiClient = $apiClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(Request $request, $routeParams = [])
|
public function handle(Request $request, $routeParams = [])
|
||||||
{
|
{
|
||||||
$params = array_only($request->getAttributes(), ['identification', 'password']);
|
$params = array_only($request->getAttributes(), ['identification', 'password']);
|
||||||
|
|
||||||
/** @var \Psr\Http\Message\ResponseInterface $response */
|
$data = $this->apiClient->send('Flarum\Api\Actions\TokenAction', $params);
|
||||||
$response = app('Flarum\Api\Actions\TokenAction')->handle(new ApiRequest($params));
|
|
||||||
|
|
||||||
if ($response->getStatusCode() === 200) {
|
|
||||||
$data = json_decode($response->getBody());
|
|
||||||
|
|
||||||
event(new UserLoggedIn($this->users->findOrFail($data->userId), $data->token));
|
event(new UserLoggedIn($this->users->findOrFail($data->userId), $data->token));
|
||||||
return $this->withRememberCookie($response, $data->token);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $response;
|
// TODO: The client needs to pass through exceptions
|
||||||
|
return $this->withRememberCookie(
|
||||||
|
$this->success(),
|
||||||
|
$data->token
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -20,6 +20,11 @@ abstract class Action
|
|||||||
return $action->call($params);
|
return $action->call($params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function success()
|
||||||
|
{
|
||||||
|
return new Response();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $url
|
* @param string $url
|
||||||
* @return \Psr\Http\Message\ResponseInterface
|
* @return \Psr\Http\Message\ResponseInterface
|
||||||
|
Reference in New Issue
Block a user