]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6736 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 16 Feb 2024 10:51:09 +0000 (11:51 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 16 Feb 2024 10:51:09 +0000 (11:51 +0100)
app/Http/Controllers/Admin/ToolsController.php
app/Models/User.php

index 1cc0f9175362c2d2e963cb079de6305061eb1e9f..d372661af63e6f7e9a390dbdb62095fc50d37055 100644 (file)
@@ -16,6 +16,8 @@ use App\Http\Controllers\Admin\Operations\Tools\FluidbookReplicate;
 use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate;
 use App\Http\Controllers\Admin\Operations\Tools\ImagesResizer;
 use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel;
+use App\Http\Controllers\Admin\Operations\Tools\PDF2SVGOperation;
+use App\Http\Controllers\Admin\Operations\Tools\SASSCompiler;
 use App\Http\Controllers\Admin\Operations\Tools\SVGCleaner;
 use App\Http\Controllers\Admin\Operations\Tools\TextToSpeech;
 use App\Http\Controllers\Controller;
@@ -36,6 +38,9 @@ class ToolsController extends Controller
     use SVGCleaner;
     use FluidbookReferencesURL;
     use FluidbookReplicate;
+    use Excel2JSON;
+    use SASSCompiler;
+    use PDF2SVGOperation;
 
     protected function index($tool, $args = '')
     {
index 7d666b47f9c03a8f7a2ac1b9d116c2d62a923903..14a218daa2b5da7fbebce259aec52e879251fd41 100644 (file)
@@ -2,7 +2,12 @@
 
 namespace App\Models;
 
+use App\Jobs\RefreshUsersTree;
 use Creativeorange\Gravatar\Facades\Gravatar;
+use Cubedesigners\UserDatabase\Jobs\ApplyPermissionsToUsers;
+use Cubedesigners\UserDatabase\Permissions;
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+use Illuminate\Support\Facades\Artisan;
 use NotificationChannels\WebPush\HasPushSubscriptions;
 
 class User extends \Cubedesigners\UserDatabase\Models\User
@@ -34,4 +39,45 @@ class User extends \Cubedesigners\UserDatabase\Models\User
         }
         return str_replace('.jpg', '', $res);
     }
+
+    public function onDeleting(): bool
+    {
+        $res = parent::onDeleting();
+
+        $formerId = $this->id;
+        $first = static::withoutGlobalScopes()->where('company', $this->company)->whereNot('id', $this->id)->orderBy('id', 'ASC')->first();
+        if (null === $first) {
+            abort(403, __('Impossible de supprimer cet utilisateur, une entreprise ne peut être laissée sans utilisateur'));
+        }
+
+        static::mergeUsers($formerId, $first->id);
+        return $res;
+    }
+
+    public static function mergeUsers($from, $to)
+    {
+        $models = [
+            ELearningMedia::class => ['owner'],
+            ELearningPackage::class => ['owner'],
+            FluidbookCollection::class => ['owner'],
+            FluidbookDocument::class => ['owner'],
+            FluidbookIconset::class => ['owner'],
+            FluidbookPublication::class => ['owner'],
+            FluidbookQuote::class => ['user', 'admin', 'reseller'],
+            FluidbookTheme::class => ['owner'],
+            Quiz::class => ['owner'],
+            QuizTheme::class => ['owner'],
+            Company::class => ['admin'],
+        ];
+        foreach ($models as $class => $attributes) {
+            /** @var $class CubistMagicAbstractModel */
+            foreach ($attributes as $attribute) {
+                $class::withoutGlobalScopes()->where($attribute, $from)->update([$attribute => $to]);
+            }
+        }
+
+        RefreshUsersTree::dispatchSync();
+        ApplyPermissionsToUsers::dispatch();
+    }
 }
+