mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 11:00:39 +00:00
UI improvements part 2
This commit is contained in:
@@ -38,7 +38,7 @@ class AuthServiceProvider extends ServiceProvider
|
||||
Gate::define($ability, function (?User $user, File | Folder $item, ?Share $share) use ($ability) {
|
||||
// If share link exist, then check share access
|
||||
if ($share) {
|
||||
return $this->share_guard($share, $item);
|
||||
return $this->shareGuard($share, $item);
|
||||
}
|
||||
|
||||
// Check user owner status
|
||||
@@ -47,7 +47,7 @@ class AuthServiceProvider extends ServiceProvider
|
||||
}
|
||||
|
||||
// Check team member ability to access into requested item
|
||||
return $this->team_member_guard($item, $user, $ability);
|
||||
return $this->teamMemberGuard($item, $user, $ability);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -58,9 +58,9 @@ class AuthServiceProvider extends ServiceProvider
|
||||
});
|
||||
}
|
||||
|
||||
private function share_guard(Share $share, Folder | File $item): bool
|
||||
private function shareGuard(Share $share, Folder | File $item): bool
|
||||
{
|
||||
if (! $share->is_protected && $share->user_id === $item->user_id) {
|
||||
if (! $share->is_protected) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ class AuthServiceProvider extends ServiceProvider
|
||||
return $share->user_id === $item->user_id;
|
||||
}
|
||||
|
||||
private function team_member_guard(Folder | File $item, ?User $user, $ability): bool
|
||||
private function teamMemberGuard(Folder | File $item, ?User $user, $ability): bool
|
||||
{
|
||||
$teamFolder = $item->getLatestParent();
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ namespace App\Users\Requests;
|
||||
use App\Users\Rules\EmailProvider;
|
||||
use App\Users\Rules\ReCaptchaRules;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use App\Users\Rules\PasswordValidationRules;
|
||||
use Illuminate\Validation\Rules\RequiredIf;
|
||||
use App\Users\Rules\PasswordValidationRules;
|
||||
|
||||
class RegisterUserRequest extends FormRequest
|
||||
{
|
||||
@@ -29,10 +29,10 @@ class RegisterUserRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email', new EmailProvider],
|
||||
'name' => 'required|string|max:255',
|
||||
'password' => $this->passwordRules(),
|
||||
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', app(ReCaptchaRules::class)]
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email', new EmailProvider],
|
||||
'name' => 'required|string|max:255',
|
||||
'password' => $this->passwordRules(),
|
||||
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', app(ReCaptchaRules::class)],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<?php
|
||||
|
||||
namespace App\Users\Rules;
|
||||
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use Illuminate\Contracts\Validation\Rule;
|
||||
|
||||
@@ -17,16 +16,17 @@ class ReCaptchaRules implements Rule
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
$client = new Client();
|
||||
$response = $client->post('https://www.google.com/recaptcha/api/siteverify',
|
||||
$response = $client->post(
|
||||
'https://www.google.com/recaptcha/api/siteverify',
|
||||
[
|
||||
'form_params' => [
|
||||
'secret' => env('RECAPTCHA_CLIENT_SECRET', false),
|
||||
'secret' => env('RECAPTCHA_CLIENT_SECRET', false),
|
||||
'remoteip' => request()->getClientIp(),
|
||||
'response' => $value
|
||||
]
|
||||
'response' => $value,
|
||||
],
|
||||
]
|
||||
);
|
||||
$body = json_decode((string)$response->getBody());
|
||||
$body = json_decode((string) $response->getBody());
|
||||
|
||||
return $body->success;
|
||||
}
|
||||
@@ -35,4 +35,4 @@ class ReCaptchaRules implements Rule
|
||||
{
|
||||
return 'Are you a robot?';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\Files\Actions;
|
||||
|
||||
use Domain\Folders\Models\Folder;
|
||||
|
||||
@@ -25,9 +25,9 @@ class SendContactMessageRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'email' => 'required|email',
|
||||
'message' => 'required|string',
|
||||
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', app(ReCaptchaRules::class)]
|
||||
'email' => 'required|email',
|
||||
'message' => 'required|string',
|
||||
'reCaptcha' => [new RequiredIf(get_settings('allowed_recaptcha') == 1), 'string', app(ReCaptchaRules::class)],
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ class StoreSocialServiceCredentialsController
|
||||
if (! app()->runningUnitTests()) {
|
||||
$credentials = [
|
||||
'facebook' => [
|
||||
'FACEBOOK_CLIENT_ID' => $request->input('client_id'),
|
||||
'FACEBOOK_CLIENT_ID' => $request->input('client_id'),
|
||||
'FACEBOOK_CLIENT_SECRET' => $request->input('client_secret'),
|
||||
],
|
||||
'google' => [
|
||||
@@ -42,7 +42,6 @@ class StoreSocialServiceCredentialsController
|
||||
'RECAPTCHA_CLIENT_ID' => $request->input('client_id'),
|
||||
'RECAPTCHA_CLIENT_SECRET' => $request->input('client_secret'),
|
||||
],
|
||||
|
||||
];
|
||||
|
||||
// Store credentials into the .env file
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
namespace Domain\Transactions\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Models\User;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Transactions\Resources\TransactionCollection;
|
||||
|
||||
class GetUserTransactionsController extends Controller
|
||||
|
||||
@@ -6,9 +6,8 @@ use Domain\Folders\Models\Folder;
|
||||
|
||||
class GetItemsListFromUrlParamAction
|
||||
{
|
||||
public function __invoke(
|
||||
string $user_id
|
||||
): array {
|
||||
public function __invoke(): array
|
||||
{
|
||||
$list = explode(',', request()->get('items'));
|
||||
|
||||
$itemList = collect($list)
|
||||
@@ -29,12 +28,10 @@ class GetItemsListFromUrlParamAction
|
||||
->where('type', 'file')
|
||||
->pluck('id');
|
||||
|
||||
$folders = Folder::whereUserId($user_id)
|
||||
->whereIn('id', $folderIds)
|
||||
$folders = Folder::whereIn('id', $folderIds)
|
||||
->get();
|
||||
|
||||
$files = File::whereUserId($user_id)
|
||||
->whereIn('id', $fileIds)
|
||||
$files = File::whereIn('id', $fileIds)
|
||||
->get();
|
||||
|
||||
return [$folders, $files];
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?php
|
||||
namespace Domain\Zip\Actions;
|
||||
|
||||
use Gate;
|
||||
use ZipStream\ZipStream;
|
||||
use Illuminate\Support\Str;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use STS\ZipStream\ZipStreamFacade as Zip;
|
||||
|
||||
@@ -17,9 +17,6 @@ class ZipAction
|
||||
Collection $files,
|
||||
?Share $shared = null
|
||||
): ZipStream {
|
||||
// Get user id
|
||||
$user_id = Auth::id() ?? $shared->user_id;
|
||||
|
||||
// Get zip name from single requested folder
|
||||
if ($files->isEmpty() && $folders->count() === 1) {
|
||||
$zipName = Str::slug($folders->first()->name) . '.zip';
|
||||
@@ -29,7 +26,12 @@ class ZipAction
|
||||
$zip = Zip::create($zipName ?? 'files.zip');
|
||||
|
||||
// Zip Files
|
||||
$files->map(function ($file) use ($zip) {
|
||||
$files->map(function ($file) use ($zip, $shared) {
|
||||
// Check user privileges to the file
|
||||
if (! Gate::any(['can-edit', 'can-view'], [$file, $shared])) {
|
||||
abort(403, 'Access Denied');
|
||||
}
|
||||
|
||||
// get file path
|
||||
$filePath = "files/$file->user_id/$file->basename";
|
||||
|
||||
@@ -50,11 +52,15 @@ class ZipAction
|
||||
});
|
||||
|
||||
// Zip Folders
|
||||
$folders->map(function ($folder) use ($zip, $user_id) {
|
||||
$folders->map(function ($folder) use ($zip, $shared) {
|
||||
// Check user privileges to the folder
|
||||
if (! Gate::any(['can-edit', 'can-view'], [$folder, $shared])) {
|
||||
abort(403, 'Access Denied');
|
||||
}
|
||||
|
||||
// Get folder
|
||||
$requested_folder = Folder::with(['folders.files', 'files'])
|
||||
->where('id', $folder->id)
|
||||
->where('user_id', $user_id)
|
||||
->with('folders')
|
||||
->first();
|
||||
|
||||
@@ -62,7 +68,7 @@ class ZipAction
|
||||
|
||||
foreach ($folderFiles as $file) {
|
||||
// get file path
|
||||
$filePath = "files/$user_id/{$file['basename']}";
|
||||
$filePath = "files/{$file['user_id']}/{$file['basename']}";
|
||||
|
||||
// Add file into zip
|
||||
if (Storage::exists($filePath)) {
|
||||
|
||||
@@ -27,10 +27,7 @@ class VisitorZipController extends Controller
|
||||
Request $request,
|
||||
Share $shared,
|
||||
): ZipStream {
|
||||
// Check ability to access protected share record
|
||||
($this->protectShareRecord)($shared);
|
||||
|
||||
list($folders, $files) = ($this->getItemsListFromUrlParam)($shared->user_id);
|
||||
list($folders, $files) = ($this->getItemsListFromUrlParam)();
|
||||
|
||||
// Check access to requested folders
|
||||
if ($folders->isNotEmpty()) {
|
||||
|
||||
@@ -21,7 +21,7 @@ class ZipController extends Controller
|
||||
Request $request,
|
||||
): ZipStream {
|
||||
// Get list of folders and files from requested url parameter
|
||||
list($folders, $files) = ($this->getItemsListFromUrlParam)(auth()->id());
|
||||
list($folders, $files) = ($this->getItemsListFromUrlParam)();
|
||||
|
||||
// Zip items
|
||||
$zip = ($this->zip)($folders, $files);
|
||||
|
||||
@@ -913,13 +913,8 @@ if (! function_exists('remove_accents')) {
|
||||
if (! function_exists('get_files_for_zip')) {
|
||||
/**
|
||||
* Get all files from folder and get their folder location in VueFileManager directories
|
||||
*
|
||||
* @param $folders
|
||||
* @param null $files
|
||||
* @param array $path
|
||||
* @return array
|
||||
*/
|
||||
function get_files_for_zip($folders, $files, $path = [])
|
||||
function get_files_for_zip($folders, $files, array $path = []): array
|
||||
{
|
||||
// Return file list
|
||||
if (! isset($folders->folders)) {
|
||||
@@ -933,6 +928,7 @@ if (! function_exists('get_files_for_zip')) {
|
||||
$folders->files->each(function ($file) use ($files, $path) {
|
||||
$files->push([
|
||||
'name' => $file->name,
|
||||
'user_id' => $file->user_id,
|
||||
'basename' => $file->basename,
|
||||
'mimetype' => $file->mimetype,
|
||||
'folder_path' => implode('/', $path),
|
||||
|
||||
Reference in New Issue
Block a user