first commit

This commit is contained in:
Noor E Ilahi
2026-01-09 12:54:53 +05:30
commit 7ccf44f7da
1070 changed files with 113036 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
<?php
namespace App\Traits;
use App\Models\User;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Support\Str;
trait ExposePermissions
{
protected ?User $permissionsUser = null;
/** Overrides the user for which the list of permissions is shown in the can attribute. */
public function setPermissionsUser(?User $user): self
{
$this->permissionsUser = $user;
return $this;
}
protected function can(): Attribute
{
$model = $this;
return Attribute::make(
get: static function () use ($model) {
$user = $model->permissionsUser ?? request()->user(); // if called from queue - use existing user
return collect($model::PERMISSIONS)->mapWithKeys(static fn ($item) => [
$item => $user?->can(Str::camel($item), $model)
]);
}
)->shouldCache();
}
}