Index.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Think.Admin
  4. // +----------------------------------------------------------------------
  5. // | 版权所有 2014~2017 广州楚才信息科技有限公司 [ http://www.cuci.cc ]
  6. // +----------------------------------------------------------------------
  7. // | 官方网站: http://think.ctolog.com
  8. // +----------------------------------------------------------------------
  9. // | 开源协议 ( https://mit-license.org )
  10. // +----------------------------------------------------------------------
  11. // | github开源项目:https://github.com/zoujingli/Think.Admin
  12. // +----------------------------------------------------------------------
  13. namespace app\admin\controller;
  14. use controller\BasicAdmin;
  15. use service\DataService;
  16. use service\NodeService;
  17. use service\ToolsService;
  18. use think\Db;
  19. use think\View;
  20. /**
  21. * 后台入口
  22. * Class Index
  23. * @package app\admin\controller
  24. * @author Anyon <zoujingli@qq.com>
  25. * @date 2017/02/15 10:41
  26. */
  27. class Index extends BasicAdmin
  28. {
  29. /**
  30. * 后台框架布局
  31. * @return View
  32. */
  33. public function index()
  34. {
  35. NodeService::applyAuthNode();
  36. $list = (array) Db::name('SystemMenu')->where(['status' => '1'])->order('sort asc,id asc')->select();
  37. $menus = $this->_filterMenu(ToolsService::arr2tree($list), NodeService::get());
  38. return view('', ['title' => '系统管理', 'menus' => $menus]);
  39. }
  40. /**
  41. * 后台主菜单权限过滤
  42. * @param array $menus
  43. * @param array $nodes
  44. * @return array
  45. */
  46. private function _filterMenu($menus, $nodes)
  47. {
  48. foreach ($menus as $key => &$menu) {
  49. // 存在子菜单时,直接使用递归处理
  50. if (!empty($menu['sub'])):
  51. $menu['sub'] = $this->_filterMenu($menu['sub'], $nodes);
  52. endif;
  53. if (!empty($menu['sub'])):
  54. $menu['url'] = '#';
  55. // 菜单链接以http开头时,不做处理
  56. elseif (preg_match('/^https?\:/i', $menu['url'])) :
  57. continue;
  58. // 菜单链接不为空时,判断登录状态及权限验证
  59. elseif ($menu['url'] !== '#') :
  60. $node = join('/', array_slice(explode('/', preg_replace('/[\W^_]/', '/', $menu['url'])), 0, 3));
  61. $menu['url'] = url($menu['url']);
  62. // 节点需要验证验证,未登录时移除此菜单
  63. if (isset($nodes[$node]) && $nodes[$node]['is_login'] && !session('user')) :
  64. unset($menus[$key]);
  65. // 节点需要权限验证,无权限时移除此菜单
  66. elseif (isset($nodes[$node]) && $nodes[$node]['is_auth'] && session('user') && !auth($node)) :
  67. unset($menus[$key]);
  68. endif;
  69. // 非以上情况时,移除此菜单
  70. else :
  71. unset($menus[$key]);
  72. endif;
  73. }
  74. return $menus;
  75. }
  76. /**
  77. * 主机信息显示
  78. * @return View
  79. */
  80. public function main()
  81. {
  82. if (session('user.password') === '21232f297a57a5a743894a0e4a801fc3') {
  83. $url = url('admin/index/pass') . '?id=' . session('user.id');
  84. $alert = ['type' => 'danger', 'title' => '安全提示', 'content' => "超级管理员默认密码未修改,建议马上<a href='javascript:void(0)' data-modal='{$url}'>修改</a>!",];
  85. $this->assign('alert', $alert);
  86. }
  87. $_version = Db::query('select version() as ver');
  88. return view('', ['mysql_ver' => array_pop($_version)['ver'], 'title' => '后台首页']);
  89. }
  90. /**
  91. * 修改密码
  92. */
  93. public function pass()
  94. {
  95. if (intval($this->request->request('id')) !== intval(session('user.id'))) {
  96. $this->error('访问异常!');
  97. }
  98. if ($this->request->isGet()) {
  99. $this->assign('verify', true);
  100. return $this->_form('SystemUser', 'user/pass');
  101. }
  102. $data = $this->request->post();
  103. if ($data['password'] !== $data['repassword']) {
  104. $this->error('两次输入的密码不一致,请重新输入!');
  105. }
  106. $user = Db::name('SystemUser')->where('id', session('user.id'))->find();
  107. if (md5($data['oldpassword']) !== $user['password']) {
  108. $this->error('旧密码验证失败,请重新输入!');
  109. }
  110. if (DataService::save('SystemUser', ['id' => session('user.id'), 'password' => md5($data['password'])])) {
  111. $this->success('密码修改成功,下次请使用新密码登录!', '');
  112. }
  113. $this->error('密码修改失败,请稍候再试!');
  114. }
  115. /**
  116. * 修改资料
  117. */
  118. public function info()
  119. {
  120. if (intval($this->request->request('id')) === intval(session('user.id'))) {
  121. return $this->_form('SystemUser', 'user/form');
  122. }
  123. $this->error('访问异常!');
  124. }
  125. }