<?php /** * Add a ScopeAuthorised to an Eloquent Model * This will help limit the scope of accounts that a user can see. */ namespace App\Traits; use Illuminate\Support\Facades\Auth; use App\Models\User; trait ScopeAccountUserAuthorised { /** * Only query records that the user is authorised to see */ public function scopeAccountUserAuthorised($query,string $table=NULL,User $uo=NULL) { if (! $uo) $uo = Auth::user(); if (! $table) $table = $this->getTable(); return $query ->whereIN($table.'.account_id',$uo->accounts_all->pluck('id')); } }