From 60d6407ee43f9b754d50825712191ed5a7f245e9 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Tue, 2 Apr 2024 14:58:06 +0200 Subject: [PATCH] Fixed network permissions in Preordernotification --- .../PreordernotificationController.php | 68 ++++++++++++++++++- 1 file changed, 65 insertions(+), 3 deletions(-) diff --git a/application/Preordernotification/PreordernotificationController.php b/application/Preordernotification/PreordernotificationController.php index c3934c8e1..f300cb841 100644 --- a/application/Preordernotification/PreordernotificationController.php +++ b/application/Preordernotification/PreordernotificationController.php @@ -51,7 +51,30 @@ class PreordernotificationController extends mfBaseController { } else { $my_networks = $this->me->myNetworks(["netowner", "salespartner"]); //var_dump($my_networks);exit; - + + $user_network_ids = $this->me->getFlag("preorder_networks")->value(); + if($user_network_ids) { + $user_network_ids = json_decode($user_network_ids); + } + + if(is_array($user_network_ids) && count($user_network_ids)) { + + if(!$my_networks) { + foreach($user_network_ids as $mnid) { + $my_networks[] = new Network($mnid); + } + } else { + //var_dump($user_network_ids, $my_networks);exit; + $new_my_networks = []; + foreach($my_networks as $network) { + if(in_array($network->id, $user_network_ids)) { + $new_my_networks[$network->id] = $network; + } + } + $my_networks = $new_my_networks; + } + } + foreach($my_networks as $network) { foreach(PreordercampaignModel::search(['network_id' => $network->id]) as $campaign) { $my_campaigns[] = $campaign; @@ -167,7 +190,7 @@ class PreordernotificationController extends mfBaseController { // check permission if(!$this->me->is("Admin")) { - $my_campaign_ids = []; + /*$my_campaign_ids = []; $my_networks = $this->me->myNetworks(["netowner", "salespartner"]); //var_dump($my_networks);exit; @@ -180,7 +203,46 @@ class PreordernotificationController extends mfBaseController { if(!in_array($campaign_id, $my_campaign_ids)) { $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error"); $this->redirect("Preordernotification"); - } + }*/ + + $my_campaigns = []; + $my_campaign_ids = []; + + $my_networks = $this->me->myNetworks(["netowner", "salespartner"]); + //var_dump($my_networks);exit; + + $user_network_ids = $this->me->getFlag("preorder_networks")->value(); + if($user_network_ids) { + $user_network_ids = json_decode($user_network_ids); + } + + if(is_array($user_network_ids) && count($user_network_ids)) { + if(!$my_networks) { + foreach($user_network_ids as $mnid) { + $my_networks[] = new Network($mnid); + } + } else { + //var_dump($user_network_ids, $my_networks);exit; + $new_my_networks = []; + foreach($my_networks as $network) { + if(in_array($network->id, $user_network_ids)) { + $new_my_networks[$network->id] = $network; + } + } + $my_networks = $new_my_networks; + } + } + + foreach($my_networks as $network) { + foreach(PreordercampaignModel::search(['network_id' => $network->id]) as $campaign) { + if(!in_array($campaign->id, $my_campaign_ids)) $my_campaign_ids[] = $campaign->id; + } + } + + if(!in_array($campaign_id, $my_campaign_ids)) { + $this->layout()->setFlash("Vorbestellkampagne nicht gefunden", "error"); + $this->redirect("Preordernotification"); + } }