<?php
/**
 * Created by PhpStorm.
 * User: xiaofeng
 * Date: 2018/3/8
 * Time: 下午2:50
 */

namespace backend\server;

use common\models\UserUr;
use Yii;
class Checkauthority
{
        /*
         * 检测操作节点权限
         * */
        public function Comparison($controller,$action)
        {
           $rows = $this->AccessNode();
           if($rows != null)
           {
                $arr = [];
                foreach ($rows as $key => $val)
                {
                    $arr[$val['controller']][] = $val['action'];
                }
           }
           if(!empty($arr[$controller]) && in_array($action,$arr[$controller]))
           {
                return true;
           }
                return false;
        }

        /*
         * 检测菜单栏显示和隐藏
         * */
        public function MenuAccess()
        {
            $row = $this->AccessMenu();
            if($row != null)
            {
                return array_column($row,'id');
            }
        }

        /*
         * 判断是否异地登录。
         * */
        public function UniqueToken()
        {
            $cacheName = Yii::$app->cache;
            $ses = Yii::$app->session['user_info'];
            $tokenName = Yii::$app->params['cacheKey']['user_token'].$ses['uid'];
            if($ses['token'] == $cacheName->get($tokenName) )
            {
                return true;
            }
                return false;
        }

        private function AccessNode()
        {
           return  $this->QueryCommon(['pfg_user_node.controller','pfg_user_node.action'],1)
                        ->leftJoin('pfg_user_node','pfg_user_rn.nid = pfg_user_node.id')
                        ->asArray()->all();
        }


        private function AccessMenu()
        {
            return $this->QueryCommon(['pfg_sysmenu.id','pfg_sysmenu.name'],2)
                        ->leftJoin('pfg_sysmenu','pfg_user_rn.nid = pfg_sysmenu.id')
                        ->orderBy(['pfg_sysmenu.sort'=>SORT_DESC])
                        ->asArray()
                        ->all();
        }

        private function QueryCommon($select,$type)
        {
            $query = UserUr::find()->andWhere(['uid'=>Yii::$app->session['user_info']['uid']]);
            $query->select = $select;
            $query = $this->WhereFilter($query,$type);
            return $query;
        }

        public function WhereFilter($query,$type)
        {
            $query->leftJoin('pfg_user_role','pfg_user_ur.rid = pfg_user_role.id and pfg_user_role.state = 1');
            $query->leftJoin('pfg_user_rn','pfg_user_role.id = pfg_user_rn.rid and type = '.$type);
            return $query;
        }




}