@@ -50,7 +50,7 @@ final class InventoryController extends AbstractController
5050 #[SecurityStrategy(Firewall::STRATEGY_NO_CHECK )]
5151 #[Route("/Inventory " , name: "glpi_inventory " , methods: ['GET ' , 'POST ' ])]
5252 #[Route("/front/inventory.php " , name: "glpi_inventory_legacy " , methods: ['GET ' , 'POST ' ])]
53- public function __invoke (Request $ request ): Response
53+ public function index (Request $ request ): Response
5454 {
5555 $ conf = new Conf ();
5656 if ($ conf ->enabled_inventory != 1 ) {
@@ -59,25 +59,13 @@ public function __invoke(Request $request): Response
5959
6060 $ inventory_request = new \Glpi \Inventory \Request ();
6161 $ inventory_request ->handleHeaders ();
62- $ refused_id = $ request ->get ('refused ' );
6362
6463 self ::$ is_running = true ;
65- $ refused = new \RefusedEquipment ();
6664
6765 try {
6866 $ handle = true ;
6967 $ contents = '' ;
70- if ($ refused_id ) {
71- \Session::checkRight ("config " , READ );
72- if ($ refused ->getFromDB ($ refused_id ) && ($ inventory_file = $ refused ->getInventoryFileName ()) !== null ) {
73- $ contents = file_get_contents ($ inventory_file );
74- } else {
75- throw new HttpException (
76- 404 ,
77- sprintf ('Invalid RefusedEquipment "%s" or inventory file missing ' , $ refused_id )
78- );
79- }
80- } else if (!$ request ->isMethod ('POST ' )) {
68+ if (!$ request ->isMethod ('POST ' )) {
8169 if ($ request ->get ('action ' ) === 'getConfig ' ) {
8270 /**
8371 * Even if Fusion protocol is not supported for getConfig requests, they
@@ -106,19 +94,47 @@ public function __invoke(Request $request): Response
10694
10795 $ inventory_request ->handleMessages ();
10896
109- if ($ refused_id ) {
110- $ redirect_url = $ refused ->handleInventoryRequest ($ inventory_request );
111- $ response = new RedirectResponse ($ redirect_url );
112- } else {
113- $ response = new Response ();
114- $ response ->setStatusCode ($ inventory_request ->getHttpResponseCode ());
115- $ headers = $ inventory_request ->getHeaders (true );
116- foreach ($ headers as $ key => $ value ) {
117- $ response ->headers ->set ($ key , $ value );
97+ $ response = new Response ();
98+ $ response ->setStatusCode ($ inventory_request ->getHttpResponseCode ());
99+ $ headers = $ inventory_request ->getHeaders (true );
100+ foreach ($ headers as $ key => $ value ) {
101+ $ response ->headers ->set ($ key , $ value );
102+ }
103+ $ response ->setContent ($ inventory_request ->getResponse ());
104+ return $ response ;
105+ }
106+
107+ #[Route("/Inventory/RefusedEquipment " , name: "glpi_refused_inventory " , methods: 'POST ' )]
108+ public function refusedEquipement (Request $ request ): Response
109+ {
110+ $ conf = new Conf ();
111+ if ($ conf ->enabled_inventory != 1 ) {
112+ throw new AccessDeniedHttpException ("Inventory is disabled " );
113+ }
114+
115+ $ inventory_request = new \Glpi \Inventory \Request ();
116+ $ refused_id = (int )$ request ->get ('id ' );
117+
118+ $ refused = new \RefusedEquipment ();
119+
120+ try {
121+ \Session::checkRight ("config " , READ );
122+ if ($ refused ->getFromDB ($ refused_id ) && ($ inventory_file = $ refused ->getInventoryFileName ()) !== null ) {
123+ $ contents = file_get_contents ($ inventory_file );
124+ } else {
125+ throw new HttpException (
126+ 404 ,
127+ sprintf ('Invalid RefusedEquipment "%s" or inventory file missing ' , $ refused_id )
128+ );
118129 }
119- $ response ->setContent ($ inventory_request ->getResponse ());
130+ $ inventory_request ->handleRequest ($ contents );
131+ } catch (\Throwable $ e ) {
132+ //empty
133+ $ inventory_request ->addError ($ e ->getMessage ());
120134 }
121135
136+ $ redirect_url = $ refused ->handleInventoryRequest ($ inventory_request );
137+ $ response = new RedirectResponse ($ redirect_url );
122138 return $ response ;
123139 }
124140}
0 commit comments