HEX
Server: Apache
System: Linux server1.ariadata.co 4.18.0-553.120.1.el8_10.x86_64 #1 SMP Mon Apr 20 18:04:27 EDT 2026 x86_64
User: nepi (1051)
PHP: 7.4.33
Disabled: exec,passthru,shell_exec,system,show_source,popen,proc_open
Upload Files
File: /home/nepi/file.nepi.ir/app/Http/Controllers/FolderPathController.php
<?php

namespace App\Http\Controllers;

use App\Folder;
use App\Services\Entries\SetPermissionsOnEntry;
use App\ShareableLink;
use Common\Core\BaseController;
use Common\Files\Traits\HashesId;

class FolderPathController extends BaseController
{
    use HashesId;

    public function show(string $hash)
    {
        $folder = Folder::with(['users', 'tags'])->findOrFail(
            $this->decodeHash($hash),
        );

        $link = request('shareable_link')
            ? ShareableLink::findOrFail(request('shareable_link'))
            : null;

        $this->authorize('show', [$folder, $link]);

        $path = $folder
            ->allParents()
            ->select(['id', 'name', 'path'])
            ->with(['users', 'tags'])
            ->get();

        $path[] = $folder;

        $path = $path
            // if path is for shareable link, only return path up to the folder that the link is for
            ->filter(function (Folder $folder) use ($link) {
                if (!$link) {
                    return true;
                }
                return str_contains($folder->path, $link->entry_id);
            })
            ->map(
                fn($folder) => app(SetPermissionsOnEntry::class)->execute(
                    $folder,
                ),
            );

        return $this->success(['path' => $path->values()]);
    }
}