1
0
mirror of https://github.com/flarum/core.git synced 2025-10-22 20:26:15 +02:00
Files
php-flarum/src/Api/Actions/TokenAction.php
2015-05-27 16:24:54 +09:30

55 lines
1.5 KiB
PHP

<?php namespace Flarum\Api\Actions;
use Flarum\Api\Request;
use Flarum\Core\Commands\GenerateAccessTokenCommand;
use Flarum\Core\Repositories\UserRepositoryInterface;
use Flarum\Core\Exceptions\PermissionDeniedException;
use Flarum\Core\Events\UserEmailChangeWasRequested;
use Illuminate\Http\JsonResponse;
use Illuminate\Contracts\Bus\Dispatcher;
class TokenAction extends JsonApiAction
{
protected $users;
protected $bus;
public function __construct(UserRepositoryInterface $users, Dispatcher $bus)
{
$this->users = $users;
$this->bus = $bus;
}
/**
* Log in and return a token.
*
* @param \Flarum\Api\Request $request
* @return \Flarum\Api\Response
*/
public function respond(Request $request)
{
$identification = $request->get('identification');
$password = $request->get('password');
$user = $this->users->findByIdentification($identification);
if (! $user || ! $user->checkPassword($password)) {
throw new PermissionDeniedException;
}
if (! $user->is_activated) {
event(new UserEmailChangeWasRequested($user, $user->email));
return new JsonResponse(['code' => 'confirm_email', 'email' => $user->email], 401);
}
$token = $this->bus->dispatch(
new GenerateAccessTokenCommand($user->id)
);
return new JsonResponse([
'token' => $token->id,
'userId' => $user->id
]);
}
}