Fixed permissions for tasks endpoints

This commit is contained in:
Constantin Graf
2024-04-09 13:06:56 +02:00
parent b9ee79174a
commit 234fa06324
8 changed files with 163 additions and 9 deletions

View File

@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace App\Models;
use Database\Factories\ProjectFactory;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -23,6 +24,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
* @property-read Client|null $client
* @property-read Collection<Task> $tasks
*
* @method Builder<Project> visibleByUser(User $user)
* @method static ProjectFactory factory()
*/
class Project extends Model
@@ -71,4 +73,17 @@ class Project extends Model
{
return $this->hasMany(Task::class);
}
/**
* @param Builder<Project> $builder
*/
public function scopeVisibleByUser(Builder $builder, User $user): void
{
$builder->where(function (Builder $builder) use ($user): Builder {
return $builder->where('is_public', '=', true)
->orWhereHas('members', function (Builder $builder) use ($user): Builder {
return $builder->whereBelongsTo($user, 'user');
});
});
}
}