Skip to content

Commit

Permalink
Allow accessing the session via the actor
Browse files Browse the repository at this point in the history
This is a bit sloppy (might come up with a better solution yet), but since most events provide access to the actor but not the request, this was the easiest/quickest way to allow extensions to access the session.
  • Loading branch information
tobyzerner committed Nov 28, 2016
1 parent c2ee84a commit 3612ca7
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
22 changes: 22 additions & 0 deletions src/Core/User.php
Expand Up @@ -30,6 +30,7 @@
use Flarum\Event\UserWasRenamed;
use Flarum\Foundation\Application;
use Illuminate\Contracts\Hashing\Hasher;
use Symfony\Component\HttpFoundation\Session\SessionInterface;

/**
* @property int $id
Expand Down Expand Up @@ -76,6 +77,11 @@ class User extends AbstractModel
*/
protected $permissions = null;

/**
* @var SessionInterface
*/
protected $session;

/**
* An array of registered user preferences. Each preference is defined with
* a key, and its value is an array containing the following keys:.
Expand Down Expand Up @@ -689,6 +695,22 @@ public function cannot($ability, $arguments = [])
return ! $this->can($ability, $arguments);
}

/**
* @return SessionInterface
*/
public function getSession()
{
return $this->session;
}

/**
* @param SessionInterface $session
*/
public function setSession(SessionInterface $session)
{
$this->session = $session;
}

/**
* Set the hasher with which to hash passwords.
*
Expand Down
2 changes: 2 additions & 0 deletions src/Http/Middleware/AuthenticateWithSession.php
Expand Up @@ -28,6 +28,8 @@ public function __invoke(Request $request, Response $response, callable $out = n

$actor = $this->getActor($session);

$actor->setSession($session);

$request = $request->withAttribute('actor', $actor);

return $out ? $out($request, $response) : $response;
Expand Down

0 comments on commit 3612ca7

Please sign in to comment.