Role.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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')->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')->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. $system = Dever::db('system')->select([]);
  41. foreach ($system as $k => $v) {
  42. $result[$k]['value'] = 's-' . $v['id'];
  43. $result[$k]['label'] = $v['name'];
  44. $result[$k]['children'] = Dever::db('menu')->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'));
  45. }
  46. return $result;
  47. }
  48. public function getAuthInfo($info)
  49. {
  50. if ($info['func'] == 1) {
  51. $info['value'] = 'm-' . $info['id'];
  52. $info['children'] = Dever::db('menu_func')->select(array('menu_id' => $info['id']), array('col' => 'id as value,name as label'));
  53. if (!$info['children']) {
  54. return array();
  55. }
  56. } else {
  57. $info['value'] = 'v' . $info['id'];
  58. }
  59. return $info;
  60. }
  61. # 展示系统
  62. public function showSystem($data)
  63. {
  64. return Dever::db('system')->show(array('id' => array('in', $data)));
  65. }
  66. # 展示菜单
  67. public function showMenu($data)
  68. {
  69. return Dever::db('menu')->show(array('id' => array('in', $data)));
  70. }
  71. # 展示权限
  72. public function showFunc($data)
  73. {
  74. return Dever::db('menu_func')->show(array('id' => array('in', $data)));
  75. }
  76. }