]> _ Git - fluidbook-toolbox.git/commitdiff
wip #7868 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 11 Feb 2026 16:50:43 +0000 (17:50 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 11 Feb 2026 16:50:43 +0000 (17:50 +0100)
app/Fields/ShortLinkFluidbooks.php
app/Models/ShortLink.php
app/Models/Traits/Permissions.php
resources/views/columns/shortlinks_fluidbooks.blade.php
resources/views/fields/shortlinks_fluidbooks.blade.php
resources/views/vendor/backpack/base/inc/sidebar_content.blade.php

index 83f29a5020e917bb5c6a4231bb392bb638a6fa0f..7237d88b6977d8d8acf2e94b12f68dab977654e0 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace App\Fields;
 
+use App\Models\FluidbookPublication;
 use Cubist\Backpack\Magic\Fields\Textarea;
 
 class ShortLinkFluidbooks extends Textarea
@@ -10,4 +11,18 @@ class ShortLinkFluidbooks extends Textarea
     protected $_columnViewNamespace = 'columns';
     protected $_adminType = 'shortlinks_fluidbooks';
     protected $_viewNamespace = 'fields';
+
+    public static function filterLinks($links)
+    {
+        if (is_string($links)) {
+            $links = json_decode($links, true);
+        }
+        $res = [];
+        foreach ($links as $link) {
+            if (!isset($res[$link['fluidbook_id'] . '_' . $link['link_id']]) && FluidbookPublication::hasPermission($link['fluidbook_id'], 'read')) {
+                $res[$link['fluidbook_id'] . '_' . $link['link_id']] = $link;
+            }
+        }
+        return $res;
+    }
 }
index 79466622a04f8cc7fb19d1a70363eaf6930a8ef6..9ca33b6320b2d24548d94afebb5653a567aee1a4 100644 (file)
@@ -35,7 +35,7 @@ class ShortLink extends ToolboxModel
     public $incrementing = false;
     protected $keyType = 'string';
 
-    protected static $_permissionBase = 'linkshortener';
+    protected static $_permissionBase = 'shortlink';
 
     public function setFields()
     {
index 2c5ac36311fba6cbd1d36ba03f73f7569792d4cc..d5b21cd89742869d9d5ee0b786e4624ebb69a68f 100644 (file)
@@ -61,20 +61,26 @@ trait Permissions
             return false;
         }
 
-        if ($user->hasPermissionTo(static::$_permissionBase . ':admin')) {
-            return true;
-        }
-        if (!$user->hasPermissionTo(static::$_permissionBase . ':' . $permission)) {
-            return false;
-        }
-        if ($id instanceof FluidbookPublication) {
+        $pubId = $id instanceof FluidbookPublication ? $id->id : $id;
+
+        return cache()->remember('fluidbook_permission_' . $user->id . '_' . $permission . '_' . $pubId, 360, function () use ($user, $permission, $id) {
+            if ($user->hasPermissionTo(static::$_permissionBase . ':admin')) {
+                return true;
+            }
+            if (!$user->hasPermissionTo(static::$_permissionBase . ':' . $permission)) {
+                return false;
+            }
+            if ($id instanceof FluidbookPublication) {
+                return true;
+            }
+            $entry = static::find($id);
+            if (null === $entry) {
+                return false;
+            }
             return true;
-        }
-        $entry = static::find($id);
-        if (null === $entry) {
-            return false;
-        }
-        return true;
+        });
+
+
     }
 
 }
index 6180c8ee99ca96cf5c928cc20538b490982bdcd0..f909433ce806948c91dcefc0122aec5efb52efb4 100644 (file)
@@ -5,4 +5,4 @@
     $messages=\App\Http\Controllers\Admin\Operations\FluidbookCollection\AuditLinksOperation::getCodesMessages();
 @endphp
 
-{{count(json_decode($value))}}
+{{count(\App\Fields\ShortLinkFluidbooks::filterLinks($value))}}
index 6c2db58326b2c5f581c785c26009c5809fbdffc8..0a688e3d4d35e70a94c44172abf7c52e3466fd17 100644 (file)
@@ -8,7 +8,7 @@
 @include('crud::fields.inc.translatable_icon')
 
 <ul>
-    @foreach(json_decode($value,true) as $v)
+    @foreach(\App\Fields\ShortLinkFluidbooks::filterLinks($value) as $v)
         @php
             /** @var \App\Models\FluidbookPublication $fluidbook */
             $fluidbook=\App\Models\FluidbookPublication::find($v['fluidbook_id']);
index 1797ffbe5bf967355cb2b48a93ffca2f8418f5cb..ccc9244e80bf40261f86b33d35bc5f9f32a997ce 100644 (file)
                     <li class="nav-item"><a class="nav-link" href="{{ backpack_url('fluidbook-collection') }}"><i
                                 class="la la-university nav-icon"></i> {{__('Collections')}}</a></li>
                 @endcan
+                @can('shortlink:read')
+                    <li class="nav-item"><a class="nav-link" href="{{ backpack_url('shortlink') }}"><i
+                                class="las la-link nav-icon"></i> {{__('Liens courts')}}</a></li>
+                @endcan
                 @can('fluidbook-translate:write')
                     <li class="nav-item"><a class="nav-link"
                                             href='{{ backpack_url('fluidbook-translate/1/edit/?_locale=en') }}'><i