Role.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php namespace Manage\Lib;
  2. use Dever;
  3. class Role extends Auth
  4. {
  5. public function update($data)
  6. {
  7. if ($data['auth']) {
  8. $auth = explode(',', $data['auth']);
  9. $data['auth'] = array();
  10. $system = $menu = $func = array();
  11. foreach ($auth as $k => $v) {
  12. if (!strstr($v, '-')) {
  13. if (strstr($v, 'v')) {
  14. $menu[] = trim($v, 'v');
  15. } else {
  16. $func[] = $v;
  17. }
  18. $data['auth'][] = $v;
  19. }
  20. }
  21. if ($func) {
  22. $funcData = Dever::db('menu_func', 'manage')->select(array('id' => array('in', $func)), array('group' => 'menu_id'));
  23. foreach ($funcData as $k => $v) {
  24. $menu[] = $v['menu_id'];
  25. }
  26. $menuData = Dever::db('menu', 'manage')->select(array('id' => array('in', $menu)), array('group' => 'system_id'));
  27. foreach ($menuData as $k => $v) {
  28. $system[] = $v['system_id'];
  29. }
  30. }
  31. $data['auth'] = implode(',', $data['auth']);
  32. $data['menu'] = implode(',', $menu);
  33. $data['system'] = implode(',', $system);
  34. }
  35. return $data;
  36. }
  37. public function getAuthData()
  38. {
  39. $result = array();
  40. $extend = Dever::load('common', 'manage')->extend();
  41. $where = array();
  42. if ($extend && $extend['system_id']) {
  43. $where['id'] = $extend['system_id'];
  44. } else {
  45. $where['id'] = 1;
  46. }
  47. $system = Dever::db('system', 'manage')->select($where);
  48. foreach ($system as $k => $v) {
  49. $result[$k]['value'] = 's-' . $v['id'];
  50. $result[$k]['label'] = $v['name'];
  51. $result[$k]['children'] = Dever::db('menu', 'manage')->tree(array('system_id' => $v['id'], 'show' => array('<', '3')), array('parent_id', '0', 'id'), array($this, 'getAuthInfo'), array('col' => 'id,name as label,parent_id,`key`,func'));
  52. }
  53. return $result;
  54. }
  55. public function getAuthInfo($k, $info)
  56. {
  57. if ($info['func'] == 1) {
  58. $info['value'] = 'm-' . $info['id'];
  59. $info['children'] = Dever::db('menu_func', 'manage')->select(array('menu_id' => $info['id']), array('col' => 'id as value,name as label'));
  60. if (!$info['children']) {
  61. return array();
  62. }
  63. } else {
  64. $info['value'] = 'v' . $info['id'];
  65. }
  66. return $info;
  67. }
  68. # 展示系统
  69. public function showSystem($data)
  70. {
  71. return Dever::db('system', 'manage')->show(array('id' => array('in', $data)));
  72. }
  73. # 展示菜单
  74. public function showMenu($data)
  75. {
  76. return Dever::db('menu', 'manage')->show(array('id' => array('in', $data)));
  77. }
  78. # 展示权限
  79. public function showFunc($data)
  80. {
  81. return Dever::db('menu_func', 'manage')->show(array('id' => array('in', $data)));
  82. }
  83. }