Silber\Bouncer\Database\Queries\Abilities::getAuthorityConstraint PHP Method

getAuthorityConstraint() protected method

Get a constraint for abilities that have been granted to the given authority.
protected getAuthorityConstraint ( Model $authority, boolean $allowed ) : Closure
$authority Illuminate\Database\Eloquent\Model
$allowed boolean
return Closure
    protected function getAuthorityConstraint(Model $authority, $allowed)
    {
        return function ($query) use($authority, $allowed) {
            $permissions = Models::table('permissions');
            $abilities = Models::table('abilities');
            $table = $authority->getTable();
            $prefix = Models::prefix();
            $query->from($table)->join($permissions, $table . '.id', '=', $permissions . '.entity_id')->whereRaw("{$prefix}{$permissions}.ability_id = {$prefix}{$abilities}.id")->where("{$permissions}.entity_type", $authority->getMorphClass())->where("{$permissions}.forbidden", !$allowed)->where("{$table}.{$authority->getKeyName()}", $authority->getKey());
        };
    }