1
0
mirror of https://github.com/flarum/core.git synced 2025-10-22 04:06:37 +02:00

Convert forum app to be PSR-7 compatible.

I also installed one new dependency: a helper library that makes it
easier to read and write cookies, given that there are no helper methods
for these purposes in the PSR-7 standard.
This commit is contained in:
Franz Liedke
2015-06-03 02:04:57 +02:00
parent 7f83552cbb
commit d462eb585e
12 changed files with 165 additions and 100 deletions

View File

@@ -1,13 +1,13 @@
<?php namespace Flarum\Forum\Actions;
use Illuminate\Http\Request;
use Flarum\Core\Commands\ConfirmEmailCommand;
use Flarum\Core\Commands\GenerateAccessTokenCommand;
use Flarum\Core\Exceptions\InvalidConfirmationTokenException;
use Psr\Http\Message\ServerRequestInterface as Request;
class ConfirmAction extends BaseAction
{
use MakesRememberCookie;
use WritesRememberCookie;
public function handle(Request $request, $routeParams = [])
{
@@ -20,11 +20,12 @@ class ConfirmAction extends BaseAction
return 'Invalid confirmation token';
}
$command = new GenerateAccessTokenCommand($user->id);
$token = $this->dispatch($command);
$token = $this->dispatch(new GenerateAccessTokenCommand($user->id));
return redirect('/')
->withCookie($this->makeRememberCookie($token->id))
->with('alert', ['type' => 'success', 'message' => 'Thanks for confirming!']);
return $this->withRememberCookie(
$this->redirectTo(''),
$token->id
);
// TODO: ->with('alert', ['type' => 'success', 'message' => 'Thanks for confirming!']);
}
}

View File

@@ -1,18 +1,17 @@
<?php namespace Flarum\Forum\Actions;
use Illuminate\Http\Request;
use Flarum\Support\HtmlAction;
use Session;
use Auth;
use Cookie;
use Config;
use View;
use DB;
use Flarum\Forum\Events\RenderView;
use Flarum\Api\Request as ApiRequest;
use Psr\Http\Message\ServerRequestInterface as Request;
class IndexAction extends BaseAction
class IndexAction extends HtmlAction
{
public function handle(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');
$data = [];
@@ -22,7 +21,7 @@ class IndexAction extends BaseAction
if (($user = $this->actor->getUser()) && $user->exists) {
$session = [
'userId' => $user->id,
'token' => Cookie::get('flarum_remember')
'token' => $request->getCookieParams()['flarum_remember'],
];
$response = app('Flarum\Api\Actions\Users\ShowAction')
@@ -35,7 +34,7 @@ class IndexAction extends BaseAction
}
}
$view = View::make('flarum.forum::index')
$view = view('flarum.forum::index')
->with('title', Config::get('flarum::forum_title', 'Flarum Demo Forum'))
->with('config', $config)
->with('layout', 'flarum.forum::forum')

View File

@@ -1,13 +1,13 @@
<?php namespace Flarum\Forum\Actions;
use Illuminate\Http\Request;
use Flarum\Forum\Events\UserLoggedIn;
use Flarum\Core\Repositories\UserRepositoryInterface;
use Flarum\Api\Request as ApiRequest;
use Psr\Http\Message\ServerRequestInterface as Request;
class LoginAction extends BaseAction
{
use MakesRememberCookie;
use WritesRememberCookie;
protected $users;
@@ -18,13 +18,16 @@ class LoginAction extends BaseAction
public function handle(Request $request, $routeParams = [])
{
$response = app('Flarum\Api\Actions\TokenAction')
->handle(new ApiRequest($request->only('identification', 'password')));
$params = array_only($request->getAttributes(), ['identification', 'password']);
if ($response->getStatusCode() === 200 && ($data = $response->getData()) && ! empty($data->token)) {
$response->withCookie($this->makeRememberCookie($data->token));
/** @var \Psr\Http\Message\ResponseInterface $response */
$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));
return $this->withRememberCookie($response, $data->token);
}
return $response;

View File

@@ -1,11 +1,12 @@
<?php namespace Flarum\Forum\Actions;
use Illuminate\Http\Request;
use Flarum\Forum\Events\UserLoggedOut;
use Cookie;
use Psr\Http\Message\ServerRequestInterface as Request;
class LogoutAction extends BaseAction
{
use WritesRememberCookie;
public function handle(Request $request, $params = [])
{
$user = $this->actor->getUser();
@@ -16,11 +17,6 @@ class LogoutAction extends BaseAction
event(new UserLoggedOut($user));
}
return redirect('')->withCookie($this->makeForgetCookie());
}
public function makeForgetCookie()
{
return Cookie::forget('flarum_remember');
return $this->withForgetCookie($this->redirectTo(''));
}
}

View File

@@ -1,11 +0,0 @@
<?php namespace Flarum\Forum\Actions;
use Cookie;
trait MakesRememberCookie
{
protected function makeRememberCookie($token)
{
return Cookie::forever('flarum_remember', $token);
}
}

View File

@@ -1,11 +1,12 @@
<?php namespace Flarum\Forum\Actions;
use Flarum\Core\Models\ResetToken;
use Illuminate\Http\Request;
use Flarum\Support\HtmlAction;
use Psr\Http\Message\ServerRequestInterface as Request;
class ResetPasswordAction extends BaseAction
class ResetPasswordAction extends HtmlAction
{
public function handle(Request $request, $routeParams = [])
public function render(Request $request, $routeParams = [])
{
$token = array_get($routeParams, 'token');

View File

@@ -2,19 +2,19 @@
use Flarum\Core\Models\ResetToken;
use Flarum\Core\Commands\EditUserCommand;
use Illuminate\Http\Request;
use Psr\Http\Message\ServerRequestInterface as Request;
class SavePasswordAction extends BaseAction
{
public function handle(Request $request, $routeParams = [])
{
$token = ResetToken::findOrFail($request->get('token'));
$token = ResetToken::findOrFail($request->getAttribute('token'));
$password = $request->get('password');
$confirmation = $request->get('password_confirmation');
$password = $request->getAttribute('password');
$confirmation = $request->getAttribute('password_confirmation');
if (! $password || $password !== $confirmation) {
return redirect()->back();
return $this->redirectTo(''); // TODO: Redirect back
}
$this->dispatch(
@@ -23,6 +23,6 @@ class SavePasswordAction extends BaseAction
$token->delete();
return redirect('');
return $this->redirectTo('');
}
}

View File

@@ -0,0 +1,26 @@
<?php namespace Flarum\Forum\Actions;
use Dflydev\FigCookies\FigCookies;
use Dflydev\FigCookies\SetCookie;
use Psr\Http\Message\ResponseInterface;
trait WritesRememberCookie
{
protected function withRememberCookie(ResponseInterface $response, $token)
{
// Set a long-living cookie (two weeks) with the remember token
return FigCookies::setResponseSetCookie(
$response,
SetCookie::create('flarum_remember', $token)->withMaxAge(14 * 24 * 60 * 60)
);
}
protected function withForgetCookie(ResponseInterface $response)
{
// Delete the cookie by setting it to an expiration date in the past
return FigCookies::setResponseSetCookie(
$response,
SetCookie::create('flarum_remember')->withMaxAge(-2628000)
);
}
}