1
0
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:
Franz Liedke
2015-06-03 02:40:24 +02:00
parent 6c3acd06bf
commit 7513b50f8f
3 changed files with 35 additions and 20 deletions

View File

@@ -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);
} }
} }

View File

@@ -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
);
} }
} }

View File

@@ -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