- ability leave team folder

- refactoring
This commit is contained in:
Čarodej
2021-10-26 09:05:08 +02:00
parent 6ef50978d5
commit 15e154176d
17 changed files with 235 additions and 58 deletions
@@ -5,6 +5,7 @@ namespace Domain\Teams\Controllers;
use Domain\Files\Resources\FilesCollection;
use Domain\Folders\Resources\FolderCollection;
use Domain\Folders\Resources\FolderResource;
use Gate;
use Str;
use Domain\Files\Models\File;
use Domain\Folders\Models\Folder;
@@ -18,6 +19,12 @@ class BrowseSharedWithMeController
$id = Str::isUuid($id) ? $id : null;
if ($id) {
$teamFolder = Folder::findOrFail($id)->getLatestParent();
if (! Gate::any(['can-edit', 'can-view'], [$teamFolder, null])) {
abort(403, 'Access Denied');
}
$folders = Folder::with(['parent:id,name'])
->where('parent_id', $id)
->sortable()
@@ -44,7 +51,7 @@ class BrowseSharedWithMeController
'root' => $id ? new FolderResource(Folder::findOrFail($id)) : null,
'folders' => new FolderCollection($folders),
'files' => isset($files) ? new FilesCollection($files) : new FilesCollection([]),
'teamFolder' => $id ? new FolderResource(Folder::findOrFail($id)->getLatestParent()) : null,
'teamFolder' => $id ? new FolderResource($teamFolder) : null,
];
}
}
@@ -0,0 +1,25 @@
<?php
namespace Domain\Teams\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\DB;
use Domain\Folders\Models\Folder;
use Auth;
class LeaveTeamFolderController extends Controller
{
public function __invoke(Folder $folder): Response|Application|ResponseFactory
{
// Find and delete attached member from team folder
DB::table('team_folder_members')
->where('parent_id', $folder->id)
->where('user_id', Auth::id())
->delete();
return response('Done.', 204);
}
}
@@ -6,9 +6,9 @@ use Gate;
class NavigationTreeController
{
public function __invoke(string $id): array
public function __invoke(Folder $folder): array
{
$teamFolder = Folder::findOrFail($id)->getLatestParent();
$teamFolder = $folder->getLatestParent();
if (! Gate::any(['can-edit', 'can-view'], [$teamFolder, null])) {
abort(403, 'Access Denied');