<?php
namespace think { class Controller { protected $request; } class Exception extends \Exception {} }
namespace {
require __DIR__.'/source/application/base/AdminController.php';
class PermissionProbe extends \app\base\AdminController {
 public function __construct(array $menus, string $action) {
  $this->userOwnMenus=$menus;
  $this->userModel=new class($menus) {private $menus; function __construct($m){$this->menus=$m;} function getUserOwnSysMenus($u,$t){return $this->menus;}};
  $this->request=new class($action){private $action; function __construct($a){$this->action=$a;} function module(){return 'p';} function controller(){return 'SchoolNutritionPlan';} function action(){return $this->action;}};
 }
 public function getCurrentUser(){return ['uuid'=>'ordinary-editor','type'=>1];}
 public function exactAccess($path){return $this->userHasMenuAccess([$path]);}
 public function result($data,$code,$message,$type){throw new \RuntimeException($message);}
}
foreach(['createTemplate','createTargetGroup'] as $action){
 $p=new PermissionProbe([['filter'=>'p/schoolnutritionplan/create']],$action);
 $p->checkFunctionPermission();
 echo "$action: checkFunctionPermission=ALLOWED with only create-plan permission\n";
}
$filter='p/schoolnutritionplan/createspecialmealrule|p/schoolnutritionplan/updatespecialmealrule|p/schoolnutritionplan/createspecialmealruleversion|p/schoolnutritionplan/disablespecialmealrule';
foreach(explode('|',$filter) as $path){
 $p=new PermissionProbe([['filter'=>$filter]],basename($path));
 $p->checkFunctionPermission();
 echo "$path: beforeAction=ALLOWED, requireMenuAccess=".($p->exactAccess($path)?'ALLOWED':'DENIED')." with granted rules-maintenance permission\n";
}
}
