• 微擎的ifp ife ifpp


    结论 

    ifp 当前用户是否有  控制器--方法 的权限 包括add edit del send view等 方法必带

    ifpp 当前用户是否有  插件 的权限

    ife 当前用户是否有  控制器--方法 的权限 编辑或添加 第二个参数是当前的数据数组 如果数组包含id 则验证edit方法 如果数组不包含 则验证add方法  第二个参数如果不带 完全等于ifp

    ife是ifp的简化用法

    下面是思路 

    先去搜索这几个函数的解析 

    $str = preg_replace('/{ifp\s+(.+?)}/', '<?php if(cv($1)) { ?>', $str);
    $str = preg_replace('/{ifpp\s+(.+?)}/', '<?php if(cp($1)) { ?>', $str);
    $str = preg_replace('/{ife\s+(\S+)\s+(\S+)}/', '<?php if( ce($1 ,$2) ) { ?>', $str);

    function cv($permtypes = '') {
       $perm = com_run('perm::check_perm', $permtypes);
       return $perm;
    }

    if (!function_exists('cp')) {

       function cp($pluginname = '') {
           $perm = com('perm');

           if ($perm) {
               return $perm->check_plugin($pluginname);
           }

           return true;
       }

    }

    function ce($permtype = '', $item = NULL) {
       $perm = com_run('perm::check_edit', $permtype, $item);
       return $perm;
    }

    cv为例子

    com_run 的意思 com(perm) 类 执行check_perm 

    com(perm) = $model = EWEI_SHOPV2_CORE . 'com/' . strtolower($name) . '.php'; 

    也就是Perm_EweiShopV2ComModel类

    的check_perm  方法

    这个方法 根据& 和| 来拆分参数 并调用check

    check再往下看  调用了用户角色表 那应该就是校检权限

     ifp和ife的区别在于check_perm和check_edit

    看check_edit函数里面的一段

    if (!($this->check_perm($permtype))) 
    {
      return false;
    }
    if (empty($item['id'])) 
    {
      $add_perm = $permtype . '.add';
      if (!($this->check($add_perm))) 
      {
         return false;
      }
      return true;
    }
    $edit_perm = $permtype . '.edit';
    if (!($this->check($edit_perm))) 
    {
      return false;
    }

    核心区别是 check_edit 会自动转化为edit或add

     其他就跟check_perm一样了

     所以结论 

    ifp 当前用户是否有  控制器--方法 的权限 包括add edit del 可能有查看吧 方法必带

    ifpp 当前用户是否有  插件 的权限

    ife 当前用户是否有  控制器--方法 的权限 编辑或添加 第二个参数是当前的数据数组 如果数组包含id 则验证edit方法 如果数组不包含 则验证add方法

    ife是ifp的简化用法

    上面是跟下代码的大概推论 去验证了下

    ife

    比如{ife 'goods' $item} 后面的item参数  是用来验证是否要验证add还是验证edit方法

    {ife 'merch.user' $item} ife的写法都是这样  控制器+model(不加add/edit/del/..方法) +当前的实际数组

    ifp

    {ifp 'messages.delete'}

    {ifp 'meeting.live.notice.send'}

    一定是 控制器+model+具体方法(add/edit/del/send..方法)

    ifpp没见到用 

    所以猜测基本正确

  • 相关阅读:
    fabric 上传图片并添加到 canvas 中
    fabric 序列化增加额外属性
    fabric 按钮
    将 SVG 元素转成 dataUrl
    fabric button 通过子类实现
    fabric 鼠标点击绘制折线
    fabric 撤销保存重做 队列+指针
    fabric 鼠标动态绘制图形
    fabric 右键菜单
    supervisor 使用中遇到的问题
  • 原文地址:https://www.cnblogs.com/dk1988/p/9116738.html
Copyright © 2020-2023  润新知