Skip to content

Instantly share code, notes, and snippets.

@blakethepatton
Last active September 4, 2018 16:44
Show Gist options
  • Save blakethepatton/973c44d73edee578c94b1095a8efd8b7 to your computer and use it in GitHub Desktop.
Save blakethepatton/973c44d73edee578c94b1095a8efd8b7 to your computer and use it in GitHub Desktop.
laravel hasPermission
// credit to wheredidgogogo
// https://laracasts.com/discuss/channels/eloquent/hasmanythrough-with-two-pivot-tables
public function hasPermission($permission_name)
{
$result = \DB::table('users')
->join('role_user','users.id','=','role_user.user_id')
->join('roles','role_user.role_id','=','roles.id')
->join('permission_role','roles.id','=','permission_role.role_id')
->join('permissions','permission_role.permission_id','=','permissions.id')
->select('permissions.*')->where('users.id','=',\Auth::user()->id)->where('permissions.name','=',$permission_name)->count();
return $result > 0;
}
//modified to my needs...
public function hasPermission($permission)
{
$result = \DB::table('users')
->join('role_user','users.id','=','role_user.user_id')
->join('roles','role_user.role_id','=','roles.id')
->join('permission_role','roles.id','=','permission_role.role_id')
->join('permissions','permission_role.permission_id','=','permissions.id')
->select('permissions.*')->where('users.id','=',$user->id);
if(is_array($permission)){
$result->whereIn('permissions.name',$permission)->count();
else {
$result->where('permissions.name','=',$permission)->count();
}
return $result > 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment