- $q = $query->where(function ($query) use ($tableDetails) {
- $query->whereExists(function ($permissionQuery) use (&$tableDetails) {
- $permissionQuery->select('id')->from('joint_permissions')
- ->whereRaw('joint_permissions.entity_id=' . $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
- ->whereRaw('joint_permissions.entity_type=' . $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
- ->where('action', '=', $this->currentAction)
- ->whereIn('role_id', $this->getRoles())
- ->where(function ($query) {
- $query->where('has_permission', '=', true)->orWhere(function ($query) {
- $query->where('has_permission_own', '=', true)
- ->where('owned_by', '=', $this->currentUser()->id);
- });
+ $q = $query->where(function ($query) use ($tableDetails, $action) {
+ $query->whereExists(function ($permissionQuery) use (&$tableDetails, $action) {
+ /** @var Builder $permissionQuery */
+ $permissionQuery->select(['role_id'])->from('joint_permissions')
+ ->whereColumn('joint_permissions.entity_id', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityIdColumn'])
+ ->whereColumn('joint_permissions.entity_type', '=', $tableDetails['tableName'] . '.' . $tableDetails['entityTypeColumn'])
+ ->where('action', '=', $action)
+ ->whereIn('role_id', $this->getCurrentUserRoles())
+ ->where(function (QueryBuilder $query) {
+ $this->addJointHasPermissionCheck($query, $this->currentUser()->id);