user('web'); abort_unless($actor instanceof User, 403); $data = $request->validate(['area' => ['required', Rule::in(['procurement', 'people'])], 'option' => ['nullable', Rule::in(array_keys(WorkContext::OPTIONS))]]); $available = array_values(array_filter($contexts->available($actor), fn ($key) => WorkContext::OPTIONS[$key]['area'] === $data['area'])); $key = $data['option'] ?? (count($available) === 1 ? $available[0] : null); abort_unless($key !== null && in_array($key, $available, true), 403, 'Escolha uma opção configurada, contratada e autorizada.'); $state = ['user_id' => $actor->id, 'tenant_id' => $actor->tenant_id, 'key' => $key]; app(RequisitionWorkflow::class)->audit($actor, 'work_context.selected', null, $request->session()->get('work_context'), $state); $request->session()->put('work_context', $state); return redirect('/dashboard'); } }