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/FoldersController.php
<?php

namespace App\Http\Controllers;

use App\FileEntry;
use App\Folder;
use App\Services\Entries\CreateFolder;
use App\Services\Entries\FolderExistsException;
use App\Services\Entries\SetPermissionsOnEntry;
use Auth;
use Common\Core\BaseController;
use Common\Files\Events\FileEntryCreated;
use Illuminate\Http\Request;

class FoldersController extends BaseController
{
    public function __construct(
        private Folder $folder,
        private Request $request
    ) {
    }

    public function show()
    {
        $folder = null;
        if ($this->request->has('hash')) {
            $folder = $this->folder
                ->with('users')
                ->whereHash($this->request->get('hash'))
                ->firstOrFail();
        }

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

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

    public function store()
    {
        $name = $this->request->get('name');
        $parentId = $this->request->get('parentId');

        $this->validate($this->request, [
            'name' => 'required|string|min:3',
            'parentId' => 'nullable|integer|exists:file_entries,id',
        ]);

        $this->authorize('store', [FileEntry::class, $parentId]);

        try {
            $folder = app(CreateFolder::class)->execute([
                'name' => $name,
                'parentId' => $parentId,
                'ownerId' => Auth::id(),
            ]);
        } catch (FolderExistsException) {
            return $this->error('', [
                'name' => __('Folder with same name already exists.'),
            ]);
        }

        event(new FileEntryCreated($folder));

        return $this->success([
            'folder' => app(SetPermissionsOnEntry::class)->execute(
                $folder->load('users'),
            ),
        ]);
    }
}