osb/app/Traits/ScopeAccountUserAuthorised.php

29 lines
574 B
PHP

<?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'));
}
}