tenant_id === session('tenant_id') && ($user->hasRole('admin') || $user->hasRole('manager') || $user->hasPermissionTo('manage petty cash')); } /** * Determine whether the user can view the petty cash request. */ public function view(User $user, PettyCash $pettyCash): bool { if ($user->tenant_id !== $pettyCash->tenant_id) { return false; } if ($user->hasRole('admin') || $user->hasRole('manager')) { return true; } if ($user->hasPermissionTo('manage petty cash')) { return true; } // Users can view their own petty cash requests return $pettyCash->requested_by === $user->id; } /** * Determine whether the user can create petty cash requests. */ public function create(User $user): bool { return $user->tenant_id === session('tenant_id') && ($user->hasRole('admin') || $user->hasRole('manager') || $user->hasPermissionTo('manage petty cash')); } /** * Determine whether the user can update the petty cash request. */ public function update(User $user, PettyCash $pettyCash): bool { if ($user->tenant_id !== $pettyCash->tenant_id) { return false; } // Only pending requests can be updated if ($pettyCash->status !== 'pending') { return false; } if ($user->hasRole('admin') || $user->hasRole('manager')) { return true; } if ($user->hasPermissionTo('manage petty cash')) { return true; } return $pettyCash->requested_by === $user->id; } /** * Determine whether the user can delete the petty cash request. */ public function delete(User $user, PettyCash $pettyCash): bool { return $user->tenant_id === $pettyCash->tenant_id && ($user->hasRole('admin') || $user->hasPermissionTo('manage petty cash')); } /** * Determine whether the user can approve the petty cash request. * Only admin/manager can approve. */ public function approve(User $user, PettyCash $pettyCash): bool { return $user->tenant_id === $pettyCash->tenant_id && ($user->hasRole('admin') || $user->hasRole('manager')); } }