51 lines
1.2 KiB
PHP
51 lines
1.2 KiB
PHP
<?php
|
|
|
|
namespace App\Models\Traits;
|
|
|
|
use Illuminate\Database\Eloquent\Builder;
|
|
|
|
trait BelongsToEscola
|
|
{
|
|
protected static function bootBelongsToEscola()
|
|
{
|
|
static::addGlobalScope('escola', function (Builder $builder) {
|
|
|
|
$user = auth()->user();
|
|
|
|
// Sem usuário logado: não filtra
|
|
if (!$user) {
|
|
return;
|
|
}
|
|
|
|
// Super admin: vê tudo (não filtra por escola)
|
|
if ($user->is_super_admin) {
|
|
return;
|
|
}
|
|
|
|
// Usuário comum: filtra pela escola atual
|
|
if ($user->current_escola_id) {
|
|
$builder->where('id_escola', $user->current_escola_id);
|
|
}
|
|
});
|
|
|
|
static::creating(function ($model) {
|
|
|
|
$user = auth()->user();
|
|
|
|
if (!$user) {
|
|
return;
|
|
}
|
|
|
|
// Super admin: não força id_escola automaticamente
|
|
if ($user->is_super_admin) {
|
|
return;
|
|
}
|
|
|
|
// Se não veio id_escola, seta pela escola atual do usuário
|
|
if (!$model->id_escola) {
|
|
$model->id_escola = $user->current_escola_id;
|
|
}
|
|
});
|
|
}
|
|
}
|