1. Go to this page and download the library: Download kenepa/resource-lock library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
kenepa / resource-lock example snippets
use Kenepa\ResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(ResourceLockPlugin::make());
}
// Post.php
use Kenepa\ResourceLock\Models\Concerns\HasLocks;
class Post extends Model
{
use HasFactory;
use HasLocks;
protected $table = 'posts';
protected $guarded = [];
}
// EditPost.php
use Kenepa\ResourceLock\Resources\Pages\Concerns\UsesResourceLock;
class EditPost extends EditRecord
{
use UsesResourceLock;
protected static string $resource = PostResource::class;
}
// ManagePosts.php
use Kenepa\ResourceLock\Resources\Pages\Concerns\UsesSimpleResourceLock;
class ManagePosts extends ManageRecords
{
use UsesSimpleResourceLock;
protected static string $resource = PostResource::class;
}
use Kenepa\ResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(ResourceLockPlugin::make()
->usesPollingToDetectPresence()
->presencePollingInterval(10));
}
use Kenepa\ResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->limitedAccessToResourceLockManager()
->gate('unlock')
}
// Example using gates
// More info about gates: https://laravel.com/docs/authorization#writing-gates
Gate::define('unlock', function (User $user, Post $post) {
return $user->email === '[email protected]';
});
// Example using spatie permission package
Permission::create(['name' => 'unlock']);
use Kenepa\ResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->userModel(\App\Models\CustomUser::class)
->resourceLockModel(\App\Models\CustomResourceLock::class);
}
// CustomGetResourceLockOwnerAction.php
namespace App\Actions;
use Kenepa\ResourceLock\Actions\GetResourceLockOwnerAction;
class CustomResourceLockOwnerAction extends GetResourceLockOwnerAction
{
public function execute($userModel): string|null
{
return $userModel->email;
}
}
use Kenepa\ResourceLock\ResourceLockPlugin;
use Filament\Panel;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(
ResourceLockPlugin::make()
->resourceLockOwnerAction(\Kenepa\ResourceLock\Actions\CustomGetResourceLockOwnerAction::class)
);
}
public function resourceLockReturnUrl(): string
{
return 'https://laracasts.com';
}