mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
- Moved chunk size option to .env
- Added ability into App Settings to flush application cache - Renew password page logo fix - removed put|patch|delete methods from axios and replaced by faking these methods to support incompatible shared hostings where you can't install php extension to support these methods. - Getting unique_ids fix
This commit is contained in:
@@ -8,6 +8,7 @@ APP_DEMO=false
|
||||
LOG_CHANNEL=stack
|
||||
SCOUT_DRIVER=tntsearch
|
||||
FILESYSTEM_DRIVER=
|
||||
CHUNK_SIZE=128
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
|
||||
@@ -227,7 +227,7 @@ class UserController extends Controller
|
||||
}
|
||||
|
||||
// Validate user name
|
||||
if ($user->name !== $request->name) abort(403);
|
||||
if ($user->name !== $request->input('data.name')) abort(403);
|
||||
|
||||
$shares = Share::where('user_id', $user->id)->get();
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ class AppFunctionsController extends Controller
|
||||
$users_table = Schema::hasTable('users');
|
||||
|
||||
// If settings table don't exist, then run migrations
|
||||
if ($users_table && ! $settings_table) {
|
||||
if ($users_table && !$settings_table) {
|
||||
Artisan::call('migrate', [
|
||||
'--force' => true
|
||||
]);
|
||||
@@ -71,7 +71,7 @@ class AppFunctionsController extends Controller
|
||||
// Get connection string
|
||||
if ($upgraded && $upgraded->value !== '1.7') {
|
||||
$connection = 'quiet-update';
|
||||
} else if (! $upgraded) {
|
||||
} else if (!$upgraded) {
|
||||
$connection = 'quiet-update';
|
||||
} else {
|
||||
$connection = $this->get_setup_status();
|
||||
@@ -164,4 +164,14 @@ class AppFunctionsController extends Controller
|
||||
|
||||
return Setting::where('name', $column)->pluck('value', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear application cache
|
||||
*/
|
||||
public function flush_cache()
|
||||
{
|
||||
Artisan::call('cache:clear');
|
||||
Artisan::call('config:clear');
|
||||
Artisan::call('config:cache');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,12 +244,12 @@ function is_editor($shared)
|
||||
function get_unique_id(): int
|
||||
{
|
||||
// Get files and folders
|
||||
$folders = FileManagerFolder::withTrashed()->get();
|
||||
$files = FileManagerFile::withTrashed()->get();
|
||||
$folders = FileManagerFolder::withTrashed()->latest();
|
||||
$files = FileManagerFile::withTrashed()->latest();
|
||||
|
||||
// Get last ids
|
||||
$folders_unique = $folders->isEmpty() ? 0 : (int) $folders->last()->unique_id;
|
||||
$files_unique = $files->isEmpty() ? 0 : (int) $files->last()->unique_id;
|
||||
$folders_unique = ! $folders->first() ? 0 : (int) $folders->first()->unique_id;
|
||||
$files_unique = ! $files->first() ? 0 : (int) $files->first()->unique_id;
|
||||
|
||||
// Count new unique id
|
||||
$unique_id = $folders_unique > $files_unique ? $folders_unique + 1 : $files_unique + 1;
|
||||
|
||||
@@ -24,7 +24,7 @@ class DeleteUserRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'name' => 'required|string|max:255',
|
||||
'data.name' => 'required|string|max:255',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,8 +25,8 @@ class DeleteItemRequest extends FormRequest
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'type' => 'required|string',
|
||||
'force_delete' => 'required|boolean',
|
||||
'data.type' => 'required|string',
|
||||
'data.force_delete' => 'required|boolean',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,11 +36,12 @@ class Editor
|
||||
$user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor';
|
||||
$name = $request->has('name') ? $request->input('name') : 'New Folder';
|
||||
$user_id = is_null($shared) ? Auth::id() : $shared->user_id;
|
||||
$unique_id = get_unique_id();
|
||||
|
||||
// Create folder
|
||||
$folder = FileManagerFolder::create([
|
||||
'parent_id' => $request->parent_id,
|
||||
'unique_id' => get_unique_id(),
|
||||
'unique_id' => $unique_id,
|
||||
'user_scope' => $user_scope,
|
||||
'user_id' => $user_id,
|
||||
'type' => 'folder',
|
||||
@@ -257,6 +258,7 @@ class Editor
|
||||
if ($request->boolean('is_last')) {
|
||||
|
||||
$disk_local = Storage::disk('local');
|
||||
$unique_id = get_unique_id();
|
||||
|
||||
// Get user data
|
||||
$user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor';
|
||||
@@ -275,20 +277,6 @@ class Editor
|
||||
// Move finished file from chunk to file-manager directory
|
||||
$disk_local->move('chunks/' . $temp_filename, 'file-manager/' . $disk_file_name);
|
||||
|
||||
// Store file
|
||||
$options = [
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'folder_id' => $request->parent_id,
|
||||
'name' => $user_file_name,
|
||||
'unique_id' => get_unique_id(),
|
||||
'basename' => $disk_file_name,
|
||||
'user_scope' => $user_scope,
|
||||
'thumbnail' => $thumbnail,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
];
|
||||
|
||||
// Move files to external storage
|
||||
if (!is_storage_driver(['local'])) {
|
||||
|
||||
@@ -299,6 +287,20 @@ class Editor
|
||||
self::move_to_external_storage($disk_file_name, $thumbnail);
|
||||
}
|
||||
|
||||
// Store file
|
||||
$options = [
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'folder_id' => $request->parent_id,
|
||||
'name' => $user_file_name,
|
||||
'unique_id' => $unique_id,
|
||||
'basename' => $disk_file_name,
|
||||
'user_scope' => $user_scope,
|
||||
'thumbnail' => $thumbnail,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
];
|
||||
|
||||
// Return new file
|
||||
return FileManagerFile::create($options);
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
return [
|
||||
|
||||
'version' => '1.7.5',
|
||||
'version' => '1.7.6',
|
||||
|
||||
// Define size of chunk uploaded by MB. E.g. integer 128 means chunk size will be 128MB.
|
||||
'chunk_size' => '128',
|
||||
'chunk_size' => env('CHUNK_SIZE', '128'),
|
||||
];
|
||||
2
public/chunks/app-email.js
vendored
2
public/chunks/app-email.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/app-others.js
vendored
2
public/chunks/app-others.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/app-payments.js
vendored
2
public/chunks/app-payments.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/create-new-password.js
vendored
2
public/chunks/create-new-password.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/forgotten-password.js
vendored
2
public/chunks/forgotten-password.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/plan-delete.js
vendored
2
public/chunks/plan-delete.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/settings-password.js
vendored
2
public/chunks/settings-password.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/settings-payment-methods.js
vendored
2
public/chunks/settings-payment-methods.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/user-delete.js
vendored
2
public/chunks/user-delete.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/user-detail.js
vendored
2
public/chunks/user-detail.js
vendored
File diff suppressed because one or more lines are too long
2
public/chunks/user-storage.js
vendored
2
public/chunks/user-storage.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/main.js
vendored
2
public/js/main.js
vendored
File diff suppressed because one or more lines are too long
@@ -142,7 +142,9 @@
|
||||
|
||||
// Send delete request
|
||||
axios
|
||||
.delete('/api/share/' + this.pickedItem.shared.token)
|
||||
.post('/api/share/' + this.pickedItem.shared.token, {
|
||||
_method: 'delete'
|
||||
})
|
||||
.then(() => {
|
||||
// Remove item from file browser
|
||||
if ( this.isSharedLocation ) {
|
||||
@@ -182,10 +184,11 @@
|
||||
|
||||
// Send request to get share link
|
||||
axios
|
||||
.patch('/api/share/' + this.shareOptions.token, {
|
||||
.post('/api/share/' + this.shareOptions.token, {
|
||||
permission: this.shareOptions.permission,
|
||||
protected: this.shareOptions.isProtected,
|
||||
password: this.shareOptions.password ? this.shareOptions.password : undefined,
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(response => {
|
||||
|
||||
|
||||
2
resources/js/helpers.js
vendored
2
resources/js/helpers.js
vendored
@@ -11,7 +11,7 @@ const Helpers = {
|
||||
|
||||
if (value === '') return
|
||||
|
||||
axios.patch(this.$store.getters.api + route, {name, value})
|
||||
axios.post(this.$store.getters.api + route, {name, value, _method: 'patch'})
|
||||
.catch(error => {
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
|
||||
22
resources/js/store/modules/fileFunctions.js
vendored
22
resources/js/store/modules/fileFunctions.js
vendored
@@ -13,9 +13,10 @@ const actions = {
|
||||
: '/api/move/' + item_from.unique_id
|
||||
|
||||
axios
|
||||
.patch(route, {
|
||||
.post(route, {
|
||||
from_type: item_from.type,
|
||||
to_unique_id: to_item.unique_id
|
||||
to_unique_id: to_item.unique_id,
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(() => {
|
||||
commit('REMOVE_ITEM', item_from.unique_id)
|
||||
@@ -62,9 +63,10 @@ const actions = {
|
||||
: '/api/rename-item/' + data.unique_id
|
||||
|
||||
axios
|
||||
.patch(route, {
|
||||
.post(route, {
|
||||
name: data.name,
|
||||
type: data.type,
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(response => {
|
||||
commit('CHANGE_ITEM_NAME', response.data)
|
||||
@@ -155,9 +157,10 @@ const actions = {
|
||||
commit('CLEAR_FILEINFO_DETAIL')
|
||||
|
||||
axios
|
||||
.patch(getters.api + '/restore-item/' + item.unique_id, {
|
||||
.post(getters.api + '/restore-item/' + item.unique_id, {
|
||||
type: item.type,
|
||||
to_home: restoreToHome,
|
||||
_method: 'patch'
|
||||
})
|
||||
.catch(() => isSomethingWrong())
|
||||
},
|
||||
@@ -182,11 +185,12 @@ const actions = {
|
||||
: '/api/remove-item/' + data.unique_id
|
||||
|
||||
axios
|
||||
.delete(route, {
|
||||
.post(route, {
|
||||
_method: 'delete',
|
||||
data: {
|
||||
type: data.type,
|
||||
force_delete: data.deleted_at ? true : false
|
||||
}
|
||||
force_delete: data.deleted_at ? true : false,
|
||||
},
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
@@ -214,7 +218,9 @@ const actions = {
|
||||
commit('LOADING_STATE', {loading: true, data: []})
|
||||
|
||||
axios
|
||||
.delete(getters.api + '/empty-trash')
|
||||
.post(getters.api + '/empty-trash', {
|
||||
_method: 'delete'
|
||||
})
|
||||
.then(() => {
|
||||
commit('LOADING_STATE', {loading: false, data: []})
|
||||
events.$emit('scrollTop')
|
||||
|
||||
4
resources/js/store/modules/userAuth.js
vendored
4
resources/js/store/modules/userAuth.js
vendored
@@ -66,7 +66,9 @@ const actions = {
|
||||
context.commit('REMOVE_ITEM_FROM_FAVOURITES', folder)
|
||||
|
||||
axios
|
||||
.delete(context.getters.api + '/folders/favourites/' + folder.unique_id)
|
||||
.post(context.getters.api + '/folders/favourites/' + folder.unique_id, {
|
||||
_method: 'delete'
|
||||
})
|
||||
.catch(() => {
|
||||
// Show error message
|
||||
events.$emit('alert:open', {
|
||||
|
||||
@@ -135,7 +135,9 @@
|
||||
|
||||
// Send request to get verify account
|
||||
axios
|
||||
.put('/api/settings/email', this.mail)
|
||||
.post('/api/settings/email', this.mail, {
|
||||
_method: 'put'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
events.$emit('toaster', {
|
||||
|
||||
@@ -57,7 +57,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<FormLabel class="mt-70">{{ $t('admin_settings.others.section_others') }}</FormLabel>
|
||||
<FormLabel class="mt-70">
|
||||
{{ $t('admin_settings.others.section_others') }}
|
||||
</FormLabel>
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('admin_settings.others.contact_email') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Contact Email"
|
||||
@@ -77,6 +79,16 @@
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<FormLabel class="mt-70">
|
||||
Application Cache
|
||||
</FormLabel>
|
||||
<InfoBox>
|
||||
Did you change anything in your .env file or change your stripe credentials? Then clear your cache.
|
||||
</InfoBox>
|
||||
<ButtonBase @click.native="flushCache" type="submit" button-style="theme" class="submit-button">
|
||||
Clear Cache
|
||||
</ButtonBase>
|
||||
</div>
|
||||
</PageTabGroup>
|
||||
</PageTab>
|
||||
@@ -95,6 +107,7 @@
|
||||
import PageTab from '@/components/Others/Layout/PageTab'
|
||||
import InfoBox from '@/components/Others/Forms/InfoBox'
|
||||
import {required} from 'vee-validate/dist/rules'
|
||||
import {events} from '@/bus'
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
@@ -126,6 +139,17 @@
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
flushCache() {
|
||||
axios.get('/api/flush-cache')
|
||||
.then(() => {
|
||||
events.$emit('toaster', {
|
||||
type: 'success',
|
||||
message: 'Your cache was successfully deleted.',
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
axios.get('/api/settings', {
|
||||
params: {
|
||||
|
||||
@@ -710,7 +710,9 @@
|
||||
|
||||
// Send request to get verify account
|
||||
axios
|
||||
.put('/api/settings/stripe', this.stripeCredentials)
|
||||
.post('/api/settings/stripe', this.stripeCredentials, {
|
||||
_method: 'put'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
// End loading
|
||||
|
||||
@@ -70,11 +70,12 @@
|
||||
this.isSendingRequest = true
|
||||
|
||||
axios
|
||||
.delete(this.$store.getters.api + '/plans/' + this.$route.params.id,
|
||||
.post(this.$store.getters.api + '/plans/' + this.$route.params.id,
|
||||
{
|
||||
data: {
|
||||
name: this.planName
|
||||
}
|
||||
},
|
||||
_method: 'delete'
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
|
||||
@@ -73,11 +73,12 @@
|
||||
this.isSendingRequest = true
|
||||
|
||||
axios
|
||||
.delete(this.$store.getters.api + '/users/' + this.$route.params.id + '/delete',
|
||||
.post(this.$store.getters.api + '/users/' + this.$route.params.id + '/delete',
|
||||
{
|
||||
data: {
|
||||
name: this.userName
|
||||
}
|
||||
},
|
||||
_method: 'delete'
|
||||
}
|
||||
)
|
||||
.then((response) => {
|
||||
|
||||
@@ -188,10 +188,11 @@
|
||||
|
||||
// Send request to get user reset link
|
||||
axios
|
||||
.patch(this.$store.getters.api + '/users/' + this.$route.params.id + '/role', {
|
||||
.post(this.$store.getters.api + '/users/' + this.$route.params.id + '/role', {
|
||||
attributes: {
|
||||
role: this.userRole,
|
||||
}
|
||||
},
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
|
||||
@@ -96,10 +96,11 @@
|
||||
|
||||
// Send request to get user reset link
|
||||
axios
|
||||
.patch(this.$store.getters.api + '/users/' + this.$route.params.id + '/capacity', {
|
||||
.post(this.$store.getters.api + '/users/' + this.$route.params.id + '/capacity', {
|
||||
attributes: {
|
||||
storage_capacity: this.capacity
|
||||
}
|
||||
},
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
|
||||
@@ -56,7 +56,9 @@
|
||||
|
||||
<!--Password reset successfully-->
|
||||
<AuthContent name="password-reset-successfully" :visible="false">
|
||||
<img class="logo" :src="config.app_logo" :alt="config.app_name">
|
||||
<img v-if="config.app_logo" class="logo" :src="config.app_logo" :alt="config.app_name">
|
||||
<b v-if="! config.app_logo" class="auth-logo-text">{{ config.app_name }}</b>
|
||||
|
||||
<h1>{{ $t('page_forgotten_password.pass_reseted_title') }}</h1>
|
||||
<h2>{{ $t('page_forgotten_password.pass_reseted_subtitle') }}</h2>
|
||||
|
||||
|
||||
@@ -30,7 +30,9 @@
|
||||
|
||||
<!--Password reset link sended-->
|
||||
<AuthContent name="password-reset-link-sended" :visible="false">
|
||||
<img class="logo" :src="config.app_logo" :alt="config.app_name">
|
||||
<img v-if="config.app_logo" class="logo" :src="config.app_logo" :alt="config.app_name">
|
||||
<b v-if="! config.app_logo" class="auth-logo-text">{{ config.app_name }}</b>
|
||||
|
||||
<h1>{{ $t('page_forgotten_password.pass_sennded_title') }}</h1>
|
||||
<h2>{{ $t('page_forgotten_password.pass_sennded_subtitle') }}</h2>
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'Profile',
|
||||
name: 'Password',
|
||||
components: {
|
||||
PageTabGroup,
|
||||
FormLabel,
|
||||
|
||||
@@ -193,7 +193,9 @@
|
||||
|
||||
this.deletingID = data.id
|
||||
|
||||
axios.delete('/api/user/payment-cards/' + data.id)
|
||||
axios.post('/api/user/payment-cards/' + data.id, {
|
||||
_method: 'delete'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
// Get payments card
|
||||
@@ -215,8 +217,9 @@
|
||||
|
||||
if (data.operation === 'set-as-default-credit-card') {
|
||||
|
||||
axios.patch('/api/user/payment-cards/' + data.id, {
|
||||
default: 1
|
||||
axios.post('/api/user/payment-cards/' + data.id, {
|
||||
default: 1,
|
||||
_method: 'patch'
|
||||
})
|
||||
.then(() => {
|
||||
|
||||
|
||||
@@ -167,6 +167,7 @@ Route::group(['middleware' => ['auth:api', 'auth.master', 'auth.admin', 'scope:m
|
||||
Route::put('/settings/stripe', 'SettingController@set_stripe');
|
||||
Route::patch('/settings', 'SettingController@update');
|
||||
Route::get('/settings', 'SettingController@show');
|
||||
Route::get('/flush-cache', 'AppFunctionsController@flush_cache');
|
||||
});
|
||||
|
||||
// Protected sharing routes for authenticated user
|
||||
|
||||
Reference in New Issue
Block a user