+4
-11
@@ -2,6 +2,7 @@
|
||||
|
||||
use App\Enums\PurchasingRole;
|
||||
use App\Models\User;
|
||||
use App\Services\EvaluationAccess;
|
||||
use App\Services\EvaluationNavigation;
|
||||
use App\Services\RequisitionWorkflow;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -12,15 +13,7 @@ use Illuminate\Validation\Rule;
|
||||
|
||||
// Only the existing isolated local Compras evaluation database may use this entry.
|
||||
$evaluationScope = static function (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);
|
||||
|
||||
return User::where('email', 'preparacao-obrigacoes@example.test')->firstOrFail();
|
||||
return app(EvaluationAccess::class)->source($request);
|
||||
};
|
||||
|
||||
$evaluationPages = [
|
||||
@@ -51,7 +44,7 @@ Route::get('/avaliar', function (Request $request) use ($evaluationScope, $evalu
|
||||
}
|
||||
$html .= '<section><h2>Experimentar funções operacionais</h2><p>Para preparar ou decidir passos específicos, podes entrar nestes perfis sintéticos sem pedir contas ou credenciais.</p>';
|
||||
foreach (PurchasingRole::cases() as $role) {
|
||||
if ($role === PurchasingRole::Admin) {
|
||||
if (in_array($role, [PurchasingRole::Admin, PurchasingRole::Configured], true)) {
|
||||
continue;
|
||||
}
|
||||
$html .= '<form method="post" action="/avaliar/entrar"><input type="hidden" name="_token" value="'.$token.'"><input type="hidden" name="role" value="'.$role->value.'"><button>'.$role->label().'</button></form>';
|
||||
@@ -63,7 +56,7 @@ Route::get('/avaliar', function (Request $request) use ($evaluationScope, $evalu
|
||||
Route::post('/avaliar/entrar', function (Request $request) use ($evaluationScope) {
|
||||
$source = $evaluationScope($request);
|
||||
$destination = EvaluationNavigation::returnPath($request->session()->get('url.intended'), $request);
|
||||
$data = $request->validate(['role' => ['required', Rule::enum(PurchasingRole::class)]]);
|
||||
$data = $request->validate(['role' => ['required', Rule::in(array_map(fn (PurchasingRole $role) => $role->value, array_filter(PurchasingRole::cases(), fn (PurchasingRole $role) => $role !== PurchasingRole::Configured)))]]);
|
||||
abort_if(array_diff(array_keys($request->all()), ['role', '_token']) !== [], 422);
|
||||
$role = PurchasingRole::from($data['role']);
|
||||
$user = DB::transaction(function () use ($source, $role) {
|
||||
|
||||
Reference in New Issue
Block a user