Index.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Tplay [ WE ONLY DO WHAT IS NECESSARY ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2017 http://tplay.pengyichen.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: 听雨 < 389625819@qq.com >
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\controller;
  12. use app\admin\controller\base\Permissions;
  13. use think\Db;
  14. use think\Session;
  15. class Index extends Permissions
  16. {
  17. public function index()
  18. {
  19. $menu = Db::name('admin_menu')->where(['is_display' => 1])->order('orders asc')->select();
  20. //删除不在当前角色权限里的菜单,实现隐藏
  21. $admin_cate = Session::get(self::ADMIN_CATE_ID);
  22. $permissions = Db::name('admin_cate')->where(['id' => $admin_cate])->value('permissions');
  23. $permissions = explode(',', $permissions);
  24. foreach ($menu as $k => $val) {
  25. if ($val['type'] == 1 and $val['is_display'] == 1 and !in_array($val['id'], $permissions)) {
  26. unset($menu[$k]);
  27. }
  28. }
  29. //添加url
  30. foreach ($menu as $key => $value) {
  31. if (empty($value['parameter'])) {
  32. $url = url($value['module'] . '/' . $value['controller'] . '/' . $value['function']);
  33. } else {
  34. $url = url($value['module'] . '/' . $value['controller'] . '/' . $value['function'], $value['parameter']);
  35. }
  36. $menu[$key]['url'] = $url;
  37. }
  38. $menus = $this->menulist($menu);
  39. $this->assign('menus', $menus);
  40. $admin = Db::name('admin')->where('id', Session::get(self::ADMIN_ID))->find();
  41. $this->assign('admin', $admin);
  42. return $this->fetch();
  43. }
  44. protected function menulist($menu)
  45. {
  46. $menus = array();
  47. //先找出顶级菜单
  48. foreach ($menu as $k => $val) {
  49. if ($val['pid'] == 0) {
  50. $menus[$k] = $val;
  51. }
  52. }
  53. //通过顶级菜单找到下属的子菜单
  54. foreach ($menus as $k => $val) {
  55. foreach ($menu as $key => $value) {
  56. if ($value['pid'] == $val['id']) {
  57. $menus[$k]['list'][] = $value;
  58. }
  59. }
  60. }
  61. //三级菜单
  62. foreach ($menus as $k => $val) {
  63. if (isset($val['list'])) {
  64. foreach ($val['list'] as $ks => $vals) {
  65. foreach ($menu as $key => $value) {
  66. if ($value['pid'] == $vals['id']) {
  67. $menus[$k]['list'][$ks]['list'][] = $value;
  68. }
  69. }
  70. }
  71. }
  72. }
  73. return $menus;
  74. }
  75. /**
  76. * 管理员退出,清除session
  77. */
  78. public function logout()
  79. {
  80. Session::delete(self::ADMIN_ID);
  81. Session::delete(self::ADMIN_NAME);
  82. Session::delete(self::ADMIN_CATE_ID);
  83. if (Session::has(self::ADMIN_ID) or Session::has(self::ADMIN_CATE_ID)) {
  84. $this->error('退出失败');
  85. } else {
  86. $this->success('正在退出...', 'admin/common/login');
  87. }
  88. }
  89. }