New permissions code (#9986)

* Initial permissions

* initial tests

* updates

* finish tests, other tweaks

* update legacy permissions checks
remove global :D

* missed facade extend

* Update eloquent permissions to use the new facade and drop joins

* method descriptions

* more docs

* fix style
This commit is contained in:
Tony Murray
2019-03-19 08:14:01 -05:00
committed by GitHub
parent bafc195ae3
commit 00a1185980
11 changed files with 543 additions and 126 deletions

View File

@@ -26,7 +26,7 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Eloquent\Builder;
abstract class BaseModel extends Model
{
@@ -69,8 +69,7 @@ abstract class BaseModel extends Model
$table = $this->getTable();
}
return $query->join('devices_perms', 'devices_perms.device_id', "$table.device_id")
->where('devices_perms.user_id', $user->user_id);
return $query->whereIn("$table.device_id", \Permissions::devicesForUser($user));
}
/**
@@ -91,11 +90,9 @@ abstract class BaseModel extends Model
$table = $this->getTable();
}
return $query->join('ports_perms', 'ports_perms.port_id', "$table.port_id")
->join('devices_perms', 'devices_perms.device_id', "$table.device_id")
->where(function ($query) use ($user) {
$query->where('ports_perms.user_id', $user->user_id)
->orWhere('devices_perms.user_id', $user->user_id);
});
return $query->where(function ($query) use ($table, $user) {
return $query->whereIn("$table.port_id", \Permissions::portsForUser($user))
->orWhereIn("$table.device_id", \Permissions::devicesForUser($user));
});
}
}