Role.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. <?php
  2. namespace App\Models;
  3. use Illuminate\Support\Facades\DB;
  4. class Role extends BaseModel {
  5. protected $table = "dc_role";
  6. public $timestamps = false;
  7. //权限检测
  8. protected function hasRoot($code){
  9. //是否开启权限校验
  10. $status=intval(S("ENABLED_PRIVCHECK"))?intval(S("ENABLED_PRIVCHECK")):0;
  11. if($status<1){
  12. return 1;
  13. }
  14. //获取所有的权限代码
  15. //读取存储权限,若没有则查询
  16. $ROLE_CODES=S('ROLE_CODES');
  17. if($ROLE_CODES<0){
  18. $ROLE_CODES=\App\Models\Priv_codeModel::getAllcode();
  19. S("ROLE_CODES",$ROLE_CODES);
  20. }
  21. //不控制的权限通过
  22. if(!in_array($code,$ROLE_CODES)){
  23. return 1;
  24. }
  25. $admin_id=session('adminInfo.admin_id');
  26. $role=\App\Models\System_root::getSupperRole();
  27. //验证是否有超级角色
  28. $roles=$this->where('admin_id',$admin_id)->where('role_id',$role)->first();
  29. if($roles&&$roles->toArray()){
  30. return 1;
  31. }
  32. //DB::connection()->enableQueryLog();
  33. //$queries = DB::getQueryLog();
  34. // print_r($queries);
  35. //个人权限
  36. $prive_code=S('ROLE_PRIVS');
  37. if($prive_code<0){
  38. $prive_code=array();
  39. $data=\App\Models\Priv_codeModel::getAdminCode($admin_id);
  40. if($data<0){
  41. return -7030050022;//没有权限
  42. }
  43. foreach ($data as $k=>$v){
  44. $prive_code[]=trim($v['priv_code']);
  45. }
  46. $prive_code=array_unique($prive_code);
  47. S('ROLE_PRIVS',$prive_code);
  48. }
  49. if(in_array($code,$prive_code)){
  50. return 1;
  51. }
  52. return -7030050022;//没有权限
  53. }
  54. //获取管理员角色
  55. function getRole($where,$list=20){
  56. if(!empty($where)&&count($where)>0){
  57. $data = $this->where($where)->orderBy('create_at','desc')->paginate($list);
  58. }else{
  59. $data=$this->orderBy('create_at','desc')->paginate($list);
  60. }
  61. return $data->toArray();
  62. }
  63. //
  64. function getRoleBy($admin_id){
  65. $data=$this->select('role_name')->where('admin_id',$admin_id)->get();
  66. if(!$data){
  67. return '';
  68. }
  69. return $data->toArray();
  70. }
  71. function getRoleIn($ids){
  72. $data=$this->whereIn('admin_id',$ids)->get();
  73. if(!$data){
  74. return array();
  75. }
  76. return $data->toArray();
  77. }
  78. //查询管理员有有的角色
  79. function gethasRole($admin_id){
  80. $data=$this->select('role_id')
  81. ->where('admin_id',$admin_id)
  82. ->get();
  83. $arr=array();
  84. if(!$data){
  85. return $arr;
  86. }
  87. $data=$data->toArray();
  88. foreach ($data as $v){
  89. $arr[]=$v['role_id'];
  90. }
  91. return $arr;
  92. }
  93. //
  94. function addRole($data){
  95. $res=$this->insert($data);
  96. if(!$res){
  97. return -7050021922;//添加角色失败
  98. }
  99. return 1;
  100. }
  101. }