Add application API and OpenAPI docs
linter / quality (pull_request) Successful in 1m18s
tests / ci (8.4) (pull_request) Successful in 1m28s

This commit is contained in:
2026-04-20 13:22:56 +02:00
parent 70d760e3a6
commit 8b25421e7c
80 changed files with 6908 additions and 1277 deletions
@@ -0,0 +1,39 @@
<?php
namespace App\Actions\Projects;
use App\Actions\Permissions\PermissionService;
use App\Enums\Permission;
use App\Models\Project;
use App\Models\User;
use Illuminate\Database\Eloquent\Collection;
class ListVisibleProjects
{
public function __construct(
private readonly PermissionService $permissionService,
) {}
/**
* @return Collection<int, Project>
*/
public function handle(User $user): Collection
{
$projectQuery = Project::query()
->orderByDesc('id');
if ($this->permissionService->allows($user, Permission::GlobalAdmin)) {
return $projectQuery->get();
}
$viewableProjectIds = $this->permissionService->viewableProjectIds($user);
if ($viewableProjectIds === []) {
return new Collection;
}
return $projectQuery
->whereIn('id', $viewableProjectIds)
->get();
}
}