Laravel 10 ckfinder tuỳ chỉnh folder cho từng người dùng

Laravel 10 ckfinder tuỳ chỉnh folder cho từng người dùng

1 trang web khi sẽ có nhiều người tham gia vào quá trình viết nội dung cho trang web .Vấn đề đặt ra là người dùng chỉ được xem thư mục của mình ,không thể xem thư mục của người khác .Bài viết hôm nay mình sẽ code demo với laravel 10

1 Đầu tiên tạo middleware

Tạo middleware với terminal sau :

php artisan make:middleware CkfinderUserFolderMiddleware

Trong file CkfinderUserFolderMiddleware

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Filesystem\Filesystem;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Storage;
use Symfony\Component\HttpFoundation\Response;

class CkfinderUserFolderMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        $user = Auth::user();
        $folder = $user->id;
        Config::set('ckfinder.backends.default.root',public_path('/userfiles/'.$folder));
        Config::set('ckfinder.backends.default.baseUrl','/userfiles/'.$folder);
        return $next($request);

    }
}

Trong file app/Http/Kernel.php chúng ta thêm vào function $middlewareAliases

'ckfinderuploadid' => CkfinderUserFolderMiddleware::class,

Trong router chúng ta thêm middleware kiểm tra người dùng trước khi truy cập vào ckfinder

Route::middleware(['auth','ckfinderuploadid'])->group(function (){
    Route::any('/ckfinder/connector', '\CKSource\CKFinderBridge\Controller\CKFinderController@requestAction')
        ->name('ckfinder_connector');

    Route::any('/ckfinder/browser', '\CKSource\CKFinderBridge\Controller\CKFinderController@browserAction')
        ->name('ckfinder_browser');
});

Như vậy là chúng ta đã xử lý xong việc tạo thư mục cho mỗi người dùng viết content