settings->getRawOriginal('avatar')) { Storage::delete($user->settings->getRawOriginal('avatar')); } // Delete all user files Storage::deleteDirectory("files/$user->id"); // Delete all user records in database collect(['folders', 'files', 'user_settings', 'shares', 'favourite_folder', 'zips']) ->each(function ($table) use ($user) { DB::table($table) ->whereUserId($user->id) ->delete(); }); } /** * Check access to requested directory * * @param integer|array $requested_id * @param string $shared Shared record detail */ public function check_item_access($requested_id, $shared) { // Get all children folders $foldersIds = Folder::with('folders:id,parent_id,id,name') ->where('user_id', $shared->user_id) ->where('parent_id', $shared->item_id) ->get(); // Get all authorized parent folders by shared folder as root of tree $accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]); // Check user access if ( is_array($requested_id) ) { foreach ($requested_id as $id) { if (!in_array($id, $accessible_folder_ids)) abort(403); } } if (! is_array($requested_id)) { if (! in_array($requested_id, $accessible_folder_ids)) abort(403); } } }