Auth.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace app\sys\taglib;
  3. use Exception;
  4. use think\template\TagLib;
  5. class Auth extends TagLib
  6. {
  7. /**
  8. * 检测是否有改权限
  9. */
  10. protected $tags = [
  11. 'check' => ['attr' => 'name', 'close' => 1],
  12. 'for' => ['attr' => 'start,end,search,attr'],
  13. 'volist' => ['attr' => 'name,id,search,attr']
  14. ];
  15. /**
  16. * 权限判断
  17. */
  18. public function tagCheck(array $tag, string $content): string
  19. {
  20. if (empty($tag['name'])) throw new Exception('tag attr "name" is must:');
  21. $parse = "<?php \$permission = request()->grant; if(in_array('$tag[name]', \$permission)):?>";
  22. $parse .= $content;
  23. $parse .= "<?php endif;?>";
  24. return $parse;
  25. }
  26. public function tagFor(array $tag, string $content): string
  27. {
  28. $start = $tag['start'];
  29. $end = $tag['end'];
  30. $search = $this->autoBuildVar($tag['search']);
  31. $attr = $tag['attr'];
  32. $parse = '<?php ';
  33. $parse .= 'for($i='.$start.';$i<'.$end.';$i++):';
  34. $parse .= $search.' == $i?$select=" '.$attr.'":$select=" ";';
  35. $parse .= ' ?>';
  36. $parse .= $content;
  37. $parse .= '<?php endfor; ?>';
  38. return $parse;
  39. }
  40. public function tagVolist(array $tag, string $content): string
  41. {
  42. $name = $tag['name'];
  43. $id = $tag['id'];
  44. $search = $this->autoBuildVar($tag['search']);
  45. $attr = $tag['attr'];
  46. $parse = '<?php ';
  47. $parse .= 'foreach($' . $name . ' as $key=>$'.$id.'):';
  48. $parse .= $search .' == $key?$select="' . $attr . '":$select="";';
  49. $parse .= ' ?>';
  50. $parse .= $content;
  51. $parse .= '<?php endforeach; ?>';
  52. return $parse;
  53. }
  54. }