add iframe action

This commit is contained in:
2025-07-02 18:07:13 +02:00
parent f8804fc651
commit b69480ccb3
3 changed files with 50 additions and 0 deletions

View File

@@ -2,6 +2,8 @@
namespace Bluesquare\Pilot\Entity;
use Illuminate\Support\Str;
abstract class Action extends Entity
{
public function action(
@@ -30,6 +32,23 @@ abstract class Action extends Entity
];
}
public function iframe($url, $expires = 240)
{
$key = 'pilot_action_' . Str::random(10);
$token = Str::random(40);
cache()->add($key, $token, now()->addMinutes($expires));
$url = $url . (str_contains($url, '?') ? '&' : '?') . "pilot_token=$key|$token";
return [
'json' => [
'type' => 'iframe',
'url' => $url,
],
];
}
public function error($message)
{
return [

View File

@@ -0,0 +1,28 @@
<?php
namespace Bluesquare\Pilot\Laravel\Middlewares;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Log;
class CheckPilotToken
{
public function handle(Request $request, Closure $next)
{
if (request('pilot_token')) {
list($key, $token) = explode('|', request('pilot_token'));
if (cache()->get($key) == $token) {
cache()->set($key, $token, now()->addHour());
session()->put('pilot_token', true);
}
}
if (! session('pilot_token')) {
abort(403, "Pilot session expired.");
}
return $next($request);
}
}

View File

@@ -2,6 +2,7 @@
namespace Bluesquare\Pilot\Laravel;
use Bluesquare\Pilot\Laravel\Middlewares\CheckPilotToken;
use Bluesquare\Pilot\Pilot;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
@@ -36,6 +37,8 @@ class PilotServiceProvider extends ServiceProvider
return $this->handleRequest($request);
});
Route::aliasMiddleware('pilot', CheckPilotToken::class);
$this->commands([
\Bluesquare\Pilot\Laravel\Commands\MakeAction::class,
\Bluesquare\Pilot\Laravel\Commands\MakeMetric::class,