Role.php
3.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Auth;
class Role extends Model{
protected $table = 'roles';
//protected $fillable = array('group','status','data');
private $roledataArr=array();
public static function userByModuleACL($module,$read,$write,$admin)
{
$rolematches=array();
$roles=Role::all();
foreach($roles as $role)
{
$nread=(stristr($role->modulerwa,$module)||stristr($role->modulerw,$module)||stristr($role->moduler,$module))&&$read;
$nwrite=(stristr($role->modulerwa,$module)||stristr($role->modulerw,$module))&&$write;
$nadmin=(stristr($role->modulerwa,$module))&&$admin;
if($nread==$read&&$nwrite==$write&&$nadmin==$admin)$rolematches[]=$role->rolename;
}
if(empty($rolematches))$rolematches[]="__ERROR__";
$users=User::whereIn("usertype",$rolematches)->get();
return $users;
}
public function roleAccess($type,$str)
{
if(empty($this->roledataArr))
{
$roledataArr=array();
$roledataArr['modulerwa']=array_filter(explode(",",strtolower($this->modulerwa)));
$roledataArr['modulerw']=array_filter(explode(",",strtolower($this->modulerw)));
$roledataArr['modulerw']=array_merge($roledataArr['modulerw'],$roledataArr['modulerwa']);
$roledataArr['moduler']=array_filter(explode(",",strtolower($this->moduler)));
$roledataArr['moduler']=array_merge($roledataArr['moduler'],$roledataArr['modulerw']);
$roledataArr['grouprwa']=array_filter(explode(",",strtolower($this->grouprwa)));
$roledataArr['grouprw']=array_filter(explode(",",strtolower($this->grouprw)));
$roledataArr['grouprw']=array_merge($roledataArr['grouprw'],$roledataArr['grouprwa']);
$roledataArr['groupr']=array_filter(explode(",",strtolower($this->groupr)));
$roledataArr['groupr']=array_merge($roledataArr['groupr'],$roledataArr['grouprw']);
$this->roledataArr=$roledataArr;
}
$str=strtolower($str);
if(!empty($this->roledataArr[$type])&&in_array($str,$this->roledataArr[$type]))return true;
return false;
}
// protected static function boot()
// {
// parent::boot();
//
// static::addGlobalScope('groupacl', function(\Illuminate\Database\Eloquent\Builder $builder)
// {
// if(Auth::check())
// {
// $builder->whereIn('group',Auth::user()->getAccessList("group",true,false,false));
// }
// });
//
// static::creating(function($model)
// {
// if(Auth::check())
// {
// if($model->group=='')$model->group=Auth::user()->group;
// if($model->group=='')$model->group="Default";
//
// $groupacl=Auth::user()->getAccessList("group",false,true,false);
// if(!in_array($model->group,$groupacl))
// {
// throw new \Exception("No Access to Create [".Auth::user()->id."] : (".implode(",",$groupacl).") in $model->group");
// return false;
// }
// }
// else if($model->group=='')$model->group="Default";
// });
// static::updating(function($model)
// {
// if(Auth::check())
// {
// $original = $model->getOriginal();
// if($original['group']=='')$original['group']='Default';
//
// if($model->group=='')$model->group=Auth::user()->group;
// if($model->group=='')$model->group="Default";
//
// $groupacl=Auth::user()->getAccessList("group",false,true,false);
// if(!in_array($original['group'],$groupacl)||!in_array($model->group,$groupacl))
// {
// throw new \Exception("No Access to Update [".Auth::user()->id."] : (".implode(",",$groupacl).") in $model->group");
// return false;
// }
// }
// else if($model->group=='')$model->group="Default";
// });
// }
}