From: soufiane Date: Mon, 11 Dec 2023 15:17:23 +0000 (+0100) Subject: wip #6482 @20:00 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=738602686f8b5cce22c913b67b07f31bb88386c6;p=fluidbook-toolbox.git wip #6482 @20:00 --- diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php index e83e2975d..86d95461f 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/LinksOperation.php @@ -10,15 +10,24 @@ use App\Models\FluidbookPublication; use Cubist\Backpack\Http\Controllers\Base\XSendFileController; use Cubist\Util\Files\Files; use Illuminate\Http\UploadedFile; +use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Route; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; +use App\Events\DetectConnexion; +use Illuminate\Support\Facades\Broadcast; +use Illuminate\Support\Str; +use Illuminate\Http\Request; + trait LinksOperation { + protected $token; + protected function setupLinksRoutes($segment, $routeName, $controller) { - Route::match(['get'], $segment . '/{id}/edit/links', $controller . '@links')->name('fluidbook_linkeditor');; + Route::match(['get'], $segment . '/{id}/edit/links', $controller . '@links')->name('fluidbook_linkeditor')->middleware('clearRouteCache'); + Route::match(['post'], $segment . '/{id}/edit/links', $controller . '@broadcast')->name('fluidbook_linkeditor_post'); Route::match(['get'], $segment . '/{id}/edit/links/versions', $controller . '@getLinkVersions'); Route::match(['get'], $segment . '/{id}/edit/links/versions/export/{version}', $controller . '@exportLinks'); Route::match(['post'], $segment . '/{id}/edit/links/import/merge', $controller . '@importLinksMerge'); @@ -273,14 +282,40 @@ trait LinksOperation }); } - public function links($id) + public function links($id, Request $request) { if (!FluidbookPublication::hasPermission($id)) { abort(401); } - return view('fluidbook_publication.link_editor', ['id' => $id, 'fluidbook' => FluidbookPublication::find($id)]); + + $token = Str::random(10); + cache(['token' => $token]); + + return view('fluidbook_publication.link_editor', ['id' => $id, 'fluidbook' => FluidbookPublication::find($id), 'access' => ""]); } + public function broadcast(Request $request) + { + $fluidbookId = $request->id; + $userId = backpack_user()->id; + $token = cache()->get('token'); + + //$key = $userId.'_'.$fluidbookId; + //Cache::forget('connexion'); + + //cache()->forget('connexion'); + $connexionExist = cache()->get('connexion'); + + if($connexionExist && $fluidbookId === $connexionExist['f_id']) { + if($userId != $connexionExist['id'] || $token !== $connexionExist['token']) { + return "unavailable"; + } else { + return $connexionExist; + } + } else { + cache(['connexion' => ['token' => $token, 'id' => $userId, 'f_id' => $fluidbookId] ]); + } + } protected function fixDriftedLinks($fluidbook_id) { diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 354ded894..ed35b7771 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -67,6 +67,7 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + 'clearRouteCache' => \App\Http\Middleware\ClearRouteCache::class, ]; /** diff --git a/app/Http/Middleware/ClearRouteCache.php b/app/Http/Middleware/ClearRouteCache.php new file mode 100644 index 000000000..3dda2aae9 --- /dev/null +++ b/app/Http/Middleware/ClearRouteCache.php @@ -0,0 +1,26 @@ +__('Appliquer les mêmes dimensions à la sélection'), ]; - + dump($access); @endphp @extends('layouts.linkeditor') @section('content') @include('fluidbook_publication.link_editor_icons') - +