UI improvements part 2

This commit is contained in:
Čarodej
2022-01-27 13:14:57 +01:00
parent a2726ae2c5
commit d855739bf2
30 changed files with 268 additions and 93 deletions
+5 -5
View File
@@ -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)],
];
}
}
+8 -8
View File
@@ -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];
+14 -8
View File
@@ -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()) {
+1 -1
View File
@@ -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);
+2 -6
View File
@@ -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),