mirror of
https://github.com/flarum/core.git
synced 2025-10-12 15:34:26 +02:00
Merge branch 'master' into 1236-database-changes
This commit is contained in:
78
src/Api/Controller/CreateTokenController.php
Normal file
78
src/Api/Controller/CreateTokenController.php
Normal file
@@ -0,0 +1,78 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* (c) Toby Zerner <toby.zerner@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Flarum\Api\Controller;
|
||||
|
||||
use Flarum\Http\AccessToken;
|
||||
use Flarum\User\Exception\PermissionDeniedException;
|
||||
use Flarum\User\UserRepository;
|
||||
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
|
||||
use Illuminate\Contracts\Events\Dispatcher as EventDispatcher;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
use Psr\Http\Server\RequestHandlerInterface;
|
||||
use Zend\Diactoros\Response\JsonResponse;
|
||||
|
||||
class CreateTokenController implements RequestHandlerInterface
|
||||
{
|
||||
/**
|
||||
* @var \Flarum\User\UserRepository
|
||||
*/
|
||||
protected $users;
|
||||
|
||||
/**
|
||||
* @var BusDispatcher
|
||||
*/
|
||||
protected $bus;
|
||||
|
||||
/**
|
||||
* @var EventDispatcher
|
||||
*/
|
||||
protected $events;
|
||||
|
||||
/**
|
||||
* @param UserRepository $users
|
||||
* @param BusDispatcher $bus
|
||||
* @param EventDispatcher $events
|
||||
*/
|
||||
public function __construct(UserRepository $users, BusDispatcher $bus, EventDispatcher $events)
|
||||
{
|
||||
$this->users = $users;
|
||||
$this->bus = $bus;
|
||||
$this->events = $events;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
public function handle(ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
$body = $request->getParsedBody();
|
||||
|
||||
$identification = array_get($body, 'identification');
|
||||
$password = array_get($body, 'password');
|
||||
$lifetime = array_get($body, 'lifetime', 3600);
|
||||
|
||||
$user = $this->users->findByIdentification($identification);
|
||||
|
||||
if (! $user || ! $user->checkPassword($password)) {
|
||||
throw new PermissionDeniedException;
|
||||
}
|
||||
|
||||
$token = AccessToken::generate($user->id, $lifetime);
|
||||
$token->save();
|
||||
|
||||
return new JsonResponse([
|
||||
'token' => $token->token,
|
||||
'userId' => $user->id
|
||||
]);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user