Checkauthority.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: xiaofeng
  5. * Date: 2018/3/8
  6. * Time: 下午2:50
  7. */
  8. namespace backend\server;
  9. use common\models\UserUr;
  10. use Yii;
  11. class Checkauthority
  12. {
  13. /*
  14. * 检测操作节点权限
  15. * */
  16. public function Comparison($controller,$action)
  17. {
  18. $rows = $this->AccessNode();
  19. if($rows != null)
  20. {
  21. $arr = [];
  22. foreach ($rows as $key => $val)
  23. {
  24. $arr[$val['controller']][] = $val['action'];
  25. }
  26. }
  27. if(!empty($arr[$controller]) && in_array($action,$arr[$controller]))
  28. {
  29. return true;
  30. }
  31. return false;
  32. }
  33. /*
  34. * 检测菜单栏显示和隐藏
  35. * */
  36. public function MenuAccess()
  37. {
  38. $row = $this->AccessMenu();
  39. if($row != null)
  40. {
  41. return array_column($row,'id');
  42. }
  43. }
  44. /*
  45. * 判断是否异地登录。
  46. * */
  47. public function UniqueToken()
  48. {
  49. $cacheName = Yii::$app->cache;
  50. $ses = Yii::$app->session['user_info'];
  51. $tokenName = Yii::$app->params['cacheKey']['user_token'].$ses['uid'];
  52. if($ses['token'] == $cacheName->get($tokenName) )
  53. {
  54. return true;
  55. }
  56. return false;
  57. }
  58. private function AccessNode()
  59. {
  60. return $this->QueryCommon(['pfg_user_node.controller','pfg_user_node.action'],1)
  61. ->leftJoin('pfg_user_node','pfg_user_rn.nid = pfg_user_node.id')
  62. ->asArray()->all();
  63. }
  64. private function AccessMenu()
  65. {
  66. return $this->QueryCommon(['pfg_sysmenu.id','pfg_sysmenu.name'],2)
  67. ->leftJoin('pfg_sysmenu','pfg_user_rn.nid = pfg_sysmenu.id')
  68. ->orderBy(['pfg_sysmenu.sort'=>SORT_DESC])
  69. ->asArray()
  70. ->all();
  71. }
  72. private function QueryCommon($select,$type)
  73. {
  74. $query = UserUr::find()->andWhere(['uid'=>Yii::$app->session['user_info']['uid']]);
  75. $query->select = $select;
  76. $query = $this->WhereFilter($query,$type);
  77. return $query;
  78. }
  79. public function WhereFilter($query,$type)
  80. {
  81. $query->leftJoin('pfg_user_role','pfg_user_ur.rid = pfg_user_role.id and pfg_user_role.state = 1');
  82. $query->leftJoin('pfg_user_rn','pfg_user_role.id = pfg_user_rn.rid and type = '.$type);
  83. return $query;
  84. }
  85. }