mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2026-08-17 16:35:20 -05:00
Fix issue with cron API call not recognizing cron tokens, found by Rajib Mahmud
This commit is contained in:
@@ -26,6 +26,9 @@ namespace FireflyIII\Api\V1\Controllers\System;
|
|||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\System\CronRequest;
|
use FireflyIII\Api\V1\Requests\System\CronRequest;
|
||||||
|
use FireflyIII\Http\Middleware\Binder;
|
||||||
|
use FireflyIII\Http\Middleware\Installer;
|
||||||
|
use FireflyIII\Support\Binder\CLIToken;
|
||||||
use FireflyIII\Support\Facades\AppConfiguration;
|
use FireflyIII\Support\Facades\AppConfiguration;
|
||||||
use FireflyIII\Support\Http\Controllers\CronRunner;
|
use FireflyIII\Support\Http\Controllers\CronRunner;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@@ -42,8 +45,9 @@ final class CronController extends Controller
|
|||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/about/getCron
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/about/getCron
|
||||||
*/
|
*/
|
||||||
public function cron(CronRequest $request): JsonResponse
|
public function cron(CronRequest $request, string $cliToken): JsonResponse
|
||||||
{
|
{
|
||||||
|
CLIToken::routeBinder($cliToken, $request->route());
|
||||||
$config = $request->getAll();
|
$config = $request->getAll();
|
||||||
|
|
||||||
Log::debug(sprintf('Now in %s', __METHOD__));
|
Log::debug(sprintf('Now in %s', __METHOD__));
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ class CronRequest extends FormRequest
|
|||||||
*/
|
*/
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return ['force' => 'in:true,false', 'date' => ['nullable', 'date', 'after:1970-01-02', 'before:2038-01-17']];
|
return [
|
||||||
|
'force' => 'in:true,false',
|
||||||
|
'date' => ['nullable', 'date', 'after:1970-01-02', 'before:2038-01-17']];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,12 +42,7 @@ class Binder
|
|||||||
/**
|
/**
|
||||||
* Binder constructor.
|
* Binder constructor.
|
||||||
*/
|
*/
|
||||||
public function __construct(
|
public function __construct(protected Auth $auth) {
|
||||||
/**
|
|
||||||
* The authentication factory instance.
|
|
||||||
*/
|
|
||||||
protected Auth $auth
|
|
||||||
) {
|
|
||||||
$this->binders = Domain::getBindables();
|
$this->binders = Domain::getBindables();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ namespace FireflyIII\Support\Binder;
|
|||||||
|
|
||||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||||
use FireflyIII\Support\Facades\Preferences;
|
use FireflyIII\Support\Facades\Preferences;
|
||||||
|
use Illuminate\Auth\AuthenticationException;
|
||||||
use Illuminate\Routing\Route;
|
use Illuminate\Routing\Route;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||||
@@ -56,6 +57,6 @@ class CLIToken implements BinderInterface
|
|||||||
}
|
}
|
||||||
Log::error(sprintf('Recognized no users by access token "%s"', $value));
|
Log::error(sprintf('Recognized no users by access token "%s"', $value));
|
||||||
|
|
||||||
throw new NotFoundHttpException();
|
throw new AuthenticationException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -160,8 +160,6 @@ $app = Application::configure(basePath: dirname(__DIR__))
|
|||||||
AddQueuedCookiesToResponse::class,
|
AddQueuedCookiesToResponse::class,
|
||||||
Binder::class,
|
Binder::class,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// $middleware->priority([StartFireflyIIISession::class, ShareErrorsFromSession::class, Authenticate::class, Binder::class, Authorize::class]);
|
|
||||||
})
|
})
|
||||||
->withEvents(discover: [
|
->withEvents(discover: [
|
||||||
__DIR__ . '/../app/Listeners',
|
__DIR__ . '/../app/Listeners',
|
||||||
|
|||||||
+7
-4
@@ -22,8 +22,7 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
use FireflyIII\Http\Middleware\AcceptHeaders;
|
use FireflyIII\Api\V1\Controllers\System\CronController;
|
||||||
use FireflyIII\Http\Middleware\Binder;
|
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
use function Safe\define;
|
use function Safe\define;
|
||||||
@@ -47,10 +46,14 @@ Route::group(
|
|||||||
'namespace' => 'FireflyIII\Api\V1\Controllers\System',
|
'namespace' => 'FireflyIII\Api\V1\Controllers\System',
|
||||||
'prefix' => 'v1',
|
'prefix' => 'v1',
|
||||||
'as' => 'api.v1.cron.',
|
'as' => 'api.v1.cron.',
|
||||||
'middleware' => [Binder::class, AcceptHeaders::class],
|
|
||||||
],
|
],
|
||||||
static function (): void {
|
static function (): void {
|
||||||
Route::get('cron/{cliToken}', ['uses' => 'CronController@cron', 'as' => 'index'])->withoutMiddleware(['api']);
|
Route::get('cron/{cliToken}', ['uses' => 'CronController@cron', 'as' => 'index'])
|
||||||
|
->withoutMiddleware(['api']);
|
||||||
|
Route::get('cron/{cliToken}',
|
||||||
|
[CronController::class, 'cron']
|
||||||
|
)->name('index')
|
||||||
|
->withoutMiddleware(['api']);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user