Files
compras/app/Services/EvaluationAccess.php
nala 6d14b4e6f0
tests / ci (push) Canceled after 0s
commit8
2026-10-30 12:32:57 +02:00

40 lines
1.5 KiB
PHP

<?php
namespace App\Services;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class EvaluationAccess
{
public function dashboardEntry(Request $request): bool
{
return EvaluationNavigation::local($request) && $request->getHost() === '127.0.0.1'
&& $request->getPort() === 8005 && $request->isMethod('GET') && $request->path() === 'dashboard';
}
public function source(Request $request): User
{
abort_unless(EvaluationNavigation::local($request), 404);
$db = DB::connection();
abort_unless($db->getDriverName() === 'pgsql' && $db->getConfig('host') === '127.0.0.1'
&& preg_match('/^compras_receipts_test_[a-f0-9]{12}$/D', $db->getDatabaseName()), 404);
$identity = $db->selectOne('select current_database() as db, current_user as role');
abort_unless($identity->db === $db->getDatabaseName() && $identity->role === 'payable_qa_'.substr($identity->db, -12), 404);
$source = User::query()->where('email', 'preparacao-obrigacoes@example.test')->firstOrFail();
abort_unless($source->tenant_id !== null, 404);
return $source;
}
public function owner(Request $request): User
{
$source = $this->source($request);
$owner = User::query()->where('tenant_id', $source->tenant_id)->where('email', 'avaliacao-admin@example.test')->firstOrFail();
abort_unless($owner->hasFunctions(['admin']) && $owner->email_verified_at !== null, 404);
return $owner;
}
}