V 1.1 Beta

This commit is contained in:
MakingCG
2020-03-11 10:36:10 +01:00
parent 3285a7e1c2
commit 2deca027cd
33 changed files with 837 additions and 1148 deletions
+1
View File
@@ -4,6 +4,7 @@
/storage/*.key /storage/*.key
/storage/*.index /storage/*.index
/vendor /vendor
.idea
.env .env
.env.backup .env.backup
.phpunit.result.cache .phpunit.result.cache
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
+418 -390
View File
@@ -1,7 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="6ba7f65e-b845-4413-bbbb-cad4b4fb5f38" name="Default Changelist" comment="" /> <list default="true" id="6ba7f65e-b845-4413-bbbb-cad4b4fb5f38" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/app/Http/Controllers/AppFunctionsController.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/config/vuefilemanager.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.gitignore" beforeDir="false" afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/AuthController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/AuthController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/ConfirmPasswordController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/ConfirmPasswordController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/FileManagerController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/FileManagerController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/ForgotPasswordController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/ForgotPasswordController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/LoginController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/RegisterController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/RegisterController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/ResetPasswordController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/ResetPasswordController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/UserAccountController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/UserAccountController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/VerificationController.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/Controllers/Auth/VerificationController.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/Controllers/PublicCloud/FileManagerController.php" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/app/Http/helpers.php" beforeDir="false" afterPath="$PROJECT_DIR$/app/Http/helpers.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/public/mix-manifest.json" beforeDir="false" afterPath="$PROJECT_DIR$/public/mix-manifest.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/App.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/App.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManager.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManager.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/UserImageInput.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/UserImageInput.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/StorageSize.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/StorageSize.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/UserHeadline.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/UserHeadline.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/UserSettings.vue" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/UserSettings.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/helpers.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/helpers.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/store/modules/filesView.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/store/modules/filesView.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/js/store/modules/userAuth.js" beforeDir="false" afterPath="$PROJECT_DIR$/resources/js/store/modules/userAuth.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/sass/app.scss" beforeDir="false" afterPath="$PROJECT_DIR$/resources/sass/app.scss" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resources/views/index.blade.php" beforeDir="false" afterPath="$PROJECT_DIR$/resources/views/index.blade.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/api.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/api.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/routes/web.php" beforeDir="false" afterPath="$PROJECT_DIR$/routes/web.php" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -14,43 +48,8 @@
<executable /> <executable />
</execution> </execution>
</component> </component>
<component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/routes/api.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="142">
<caret line="44" column="20" lean-forward="true" selection-start-line="44" selection-start-column="20" selection-end-line="44" selection-end-column="20" />
<folding>
<element signature="e#37#419#0#PHP" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/resources/views/index.blade.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="119" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="FindInProjectRecents"> <component name="FindInProjectRecents">
<findStrings> <findStrings>
<find>VueFileManager</find>
<find>APP_NAME</find>
<find>ResetUserPasswordNotification</find>
<find>MAIL_FROM_ADDRESS</find>
<find>belongsToMany</find>
<find>.map</find>
<find>recursiveFind</find>
<find>latest_uploads</find>
<find>-&gt;each</find>
<find>-&gt;first</find>
<find>VerifyCsrfToken</find> <find>VerifyCsrfToken</find>
<find>CreateFreshApiToken</find> <find>CreateFreshApiToken</find>
<find>j. M. Y, H:i</find> <find>j. M. Y, H:i</find>
@@ -71,14 +70,20 @@
<find>cookie</find> <find>cookie</find>
<find>getAppData</find> <find>getAppData</find>
<find>SET_AUT</find> <find>SET_AUT</find>
<find>PublicCloud</find>
<find>Illuminate\Http\Response</find>
<find>$updateText</find>
<find>...map</find>
<find>...mapGetters</find>
<find>access_token</find>
<find>user_account_capacity</find>
<find>'bo</find>
<find>SET_CURRENT</find>
<find>logOut</find>
</findStrings> </findStrings>
</component> </component>
<component name="FrameworkCommandLineHistory"> <component name="FrameworkCommandLineHistory">
<commandsHistory> <commandsHistory>
<command text="php artisan cache:clear" />
<command text="php artisan config:clear" />
<command text="php artisan cache:clear" />
<command text="php artisan config:clear" />
<command text="php artisan serve --host=192.168.1.131" /> <command text="php artisan serve --host=192.168.1.131" />
<command text="php artisan serve" /> <command text="php artisan serve" />
<command text="php artisan serve --host=172.20.10.5" /> <command text="php artisan serve --host=172.20.10.5" />
@@ -100,65 +105,72 @@
<command text="npm rebuild" /> <command text="npm rebuild" />
<command text="npm run prod" /> <command text="npm run prod" />
<command text="npm run hot" /> <command text="npm run hot" />
<command text="php artisan make:controller AppFunctionsController" />
<command text="php artisan dump-autoload" />
<command text="composer dump-autoload" />
<command text="php artisan serve" />
</commandsHistory> </commandsHistory>
</component> </component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="HighlightingSettingsPerFile"> <component name="HighlightingSettingsPerFile">
<setting file="mock:///Dummy.txt" root0="SKIP_INSPECTION" /> <setting file="mock:///Dummy.txt" root0="SKIP_INSPECTION" />
</component> </component>
<component name="IdeDocumentHistory"> <component name="IdeDocumentHistory">
<option name="CHANGED_PATHS"> <option name="CHANGED_PATHS">
<list> <list>
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ToolbarButton.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ButtonBase.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/SearchBar.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/MobileToolbar.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/MobileOptionList.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/EmptyPage.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/MobileActions.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/UploadProgress.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Spinner.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FilesContainer.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/MobileActionButtonUpload.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ToolbarButtonUpload.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/DesktopToolbar.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/DesktopToolbar.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileInfoPanel.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileInfoPanel.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileItemList.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileItemList.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/FileListItemThumbnail.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/FileListItemThumbnail.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth/AuthButton.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth/AuthButton.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/UserHeadline.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileItemGrid.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/FileItemGrid.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth/AuthContentWrapper.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth/AuthContentWrapper.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/EmptyMessage.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/EmptyMessage.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/StorageSize.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ButtonUpload.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ButtonUpload.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ProgressBar.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ProgressBar.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/UserImageInput.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/ThemeLabel.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/ThemeLabel.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/PageHeader.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/PageHeader.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/TextLabel.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/TextLabel.vue" />
<option value="$PROJECT_DIR$/package.json" /> <option value="$PROJECT_DIR$/package.json" />
<option value="$PROJECT_DIR$/webpack.mix.js" /> <option value="$PROJECT_DIR$/webpack.mix.js" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue" />
<option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/UserAccountController.php" />
<option value="$PROJECT_DIR$/app/Http/Middleware/Authenticate.php" /> <option value="$PROJECT_DIR$/app/Http/Middleware/Authenticate.php" />
<option value="$PROJECT_DIR$/resources/js/bootstrap.js" /> <option value="$PROJECT_DIR$/resources/js/bootstrap.js" />
<option value="$PROJECT_DIR$/routes/web.php" />
<option value="$PROJECT_DIR$/app/Http/Middleware/CookieAuth.php" /> <option value="$PROJECT_DIR$/app/Http/Middleware/CookieAuth.php" />
<option value="$PROJECT_DIR$/app/Http/Kernel.php" /> <option value="$PROJECT_DIR$/app/Http/Kernel.php" />
<option value="$PROJECT_DIR$/app/Http/Middleware/EncryptCookies.php" /> <option value="$PROJECT_DIR$/app/Http/Middleware/EncryptCookies.php" />
<option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/AuthController.php" /> <option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/AuthController.php" />
<option value="$PROJECT_DIR$/resources/js/main.js" /> <option value="$PROJECT_DIR$/resources/js/main.js" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView.vue" />
<option value="$PROJECT_DIR$/resources/js/store/modules/app.js" />
<option value="$PROJECT_DIR$/.gitignore" />
<option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/FileManagerController.php" />
<option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/UserAccountController.php" />
<option value="$PROJECT_DIR$/app/Http/Controllers/AppFunctionsController.php" />
<option value="$PROJECT_DIR$/resources/sass/app.scss" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/UserImageInput.vue" />
<option value="$PROJECT_DIR$/app/Http/Controllers/Auth/AuthController.php" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/StorageSize.vue" />
<option value="$PROJECT_DIR$/app/Http/helpers.php" />
<option value="$PROJECT_DIR$/resources/views/index.blade.php" /> <option value="$PROJECT_DIR$/resources/views/index.blade.php" />
<option value="$PROJECT_DIR$/config/vuefilemanager.php" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/UserHeadline.vue" />
<option value="$PROJECT_DIR$/app/Http/Controllers/FileManagerController.php" />
<option value="$PROJECT_DIR$/app/Http/Controllers/UserAccountController.php" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue" />
<option value="$PROJECT_DIR$/resources/js/helpers.js" />
<option value="$PROJECT_DIR$/resources/js/store/modules/filesView.js" />
<option value="$PROJECT_DIR$/routes/web.php" />
<option value="$PROJECT_DIR$/resources/js/store/modules/userAuth.js" />
<option value="$PROJECT_DIR$/resources/js/App.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManager.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView.vue" /> <option value="$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/UserSettings.vue" />
<option value="$PROJECT_DIR$/resources/js/store/modules/userAuth.js" />
<option value="$PROJECT_DIR$/resources/js/store/modules/app.js" />
<option value="$PROJECT_DIR$/resources/js/components/VueFileManager.vue" />
<option value="$PROJECT_DIR$/routes/api.php" /> <option value="$PROJECT_DIR$/routes/api.php" />
<option value="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/FileManagerController.php" /> <option value="$PROJECT_DIR$/.env" />
<option value="$PROJECT_DIR$/.gitignore" />
</list> </list>
</option> </option>
</component> </component>
@@ -283,26 +295,20 @@
<option name="width" value="1680" /> <option name="width" value="1680" />
<option name="height" value="1050" /> <option name="height" value="1050" />
</component> </component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectView"> <component name="ProjectView">
<navigator proportions="" version="1"> <navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scope" /> <pane id="Scope" />
<pane id="ProjectPane"> <pane id="ProjectPane" />
<subPane>
<expand>
<path>
<item name="vue-filemanager-laravel" type="b2602c69:ProjectViewProjectNode" />
<item name="vue-filemanager-laravel" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="SHARE_PROJECT_CONFIGURATION_FILES" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" /> <property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/resources/sass" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/resources/sass" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" /> <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
@@ -318,6 +324,7 @@
<recent name="$PROJECT_DIR$/app" /> <recent name="$PROJECT_DIR$/app" />
</key> </key>
<key name="MoveFile.RECENT_KEYS"> <key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/app/Http/Controllers" />
<recent name="$PROJECT_DIR$/resources/sass/vue-file-manager" /> <recent name="$PROJECT_DIR$/resources/sass/vue-file-manager" />
<recent name="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud" /> <recent name="$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud" />
</key> </key>
@@ -352,18 +359,17 @@
<updated>1582538406416</updated> <updated>1582538406416</updated>
<workItem from="1582538408226" duration="28590000" /> <workItem from="1582538408226" duration="28590000" />
<workItem from="1583169038847" duration="49277000" /> <workItem from="1583169038847" duration="49277000" />
<workItem from="1583771973016" duration="25153000" /> <workItem from="1583771973016" duration="35891000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="103020000" /> <option name="totallyTimeSpent" value="113758000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="0" y="0" width="1680" height="1050" extended-state="0" /> <frame x="0" y="0" width="1680" height="1050" extended-state="0" />
<editor active="true" />
<layout> <layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.18154761" /> <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.18154761" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="npm" order="2" side_tool="true" /> <window_info id="npm" order="2" side_tool="true" />
<window_info id="Favorites" order="3" side_tool="true" /> <window_info id="Favorites" order="3" side_tool="true" />
@@ -377,7 +383,7 @@
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" /> <window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Version Control" order="8" /> <window_info anchor="bottom" id="Version Control" order="8" />
<window_info anchor="bottom" id="Database Changes" order="9" /> <window_info anchor="bottom" id="Database Changes" order="9" />
<window_info anchor="bottom" id="Command Line Tools Console" order="10" weight="0.36761904" /> <window_info active="true" anchor="bottom" id="Command Line Tools Console" order="10" visible="true" weight="0.36761904" />
<window_info anchor="bottom" id="Terminal" order="11" weight="0.3295238" /> <window_info anchor="bottom" id="Terminal" order="11" weight="0.3295238" />
<window_info anchor="bottom" id="Event Log" order="12" side_tool="true" /> <window_info anchor="bottom" id="Event Log" order="12" side_tool="true" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" /> <window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
@@ -390,170 +396,6 @@
<option name="version" value="1" /> <option name="version" value="1" />
</component> </component>
<component name="editorHistoryManager"> <component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/vendor/symfony/http-foundation/Request.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="108" column="11" selection-start-line="108" selection-start-column="11" selection-end-line="108" selection-end-column="11" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Http/ResponseTrait.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="107" column="20" selection-start-line="107" selection-start-column="20" selection-end-line="107" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/auth.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="83">
<caret line="37" column="17" selection-start-line="37" selection-start-column="17" selection-end-line="37" selection-end-column="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="532">
<caret line="19" column="19" selection-start-line="19" selection-start-column="15" selection-end-line="19" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/cors.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="368">
<caret line="20" column="34" selection-start-line="20" selection-start-column="34" selection-end-line="20" selection-end-column="34" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="504">
<caret line="187" column="113" selection-start-line="186" selection-start-column="60" selection-end-line="187" selection-end-column="113" />
<folding>
<element signature="e#57#69#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/app.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/router.js">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/public/assets/images/hero.svg">
<provider selected="true" editor-type-id="images" />
</entry>
<entry file="file://$PROJECT_DIR$/resources/sass/vue-file-manager/_variables.scss">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/resources/sass/vue-file-manager/_mixins.scss">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/resources/sass/vue-file-manager/_forms.scss">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="336">
<caret line="12" column="16" lean-forward="true" selection-start-line="12" selection-start-column="16" selection-end-line="12" selection-end-column="16" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/sass/app.scss">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="6" column="34" lean-forward="true" selection-start-line="6" selection-start-column="34" selection-end-line="6" selection-end-column="34" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/FileListItemThumbnail.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="63">
<caret line="30" column="10" selection-start-line="30" selection-start-column="10" selection-end-line="30" selection-end-column="10" />
<folding>
<element signature="n#script#0;n#!!top" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/App.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224">
<caret line="27" selection-start-line="27" selection-end-line="27" selection-end-column="19" />
<folding>
<element signature="n#script#0;n#!!top" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/symfony/http-foundation/Cookie.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="308">
<caret line="18" column="6" selection-start-line="18" selection-start-column="6" selection-end-line="18" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/package.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="430">
<caret line="17" selection-start-line="17" selection-end-line="17" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/symfony/http-foundation/HeaderBag.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="95" column="20" selection-start-line="95" selection-start-column="20" selection-end-line="95" selection-end-column="20" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/session.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="5068">
<caret line="181" column="23" selection-start-line="181" selection-start-column="23" selection-end-line="181" selection-end-column="23" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/webpack.mix.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="616">
<caret line="22" column="13" selection-start-line="22" selection-start-column="13" selection-end-line="22" selection-end-column="13" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="203">
<caret line="102" column="19" selection-start-line="102" selection-start-column="19" selection-end-line="102" selection-end-column="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CreateFreshApiToken.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="155">
<caret line="42" column="34" lean-forward="true" selection-start-line="42" selection-start-column="34" selection-end-line="42" selection-end-column="34" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CheckScopes.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="66">
<caret line="7" column="6" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CheckForAnyScope.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="66">
<caret line="7" column="6" selection-start-line="7" selection-start-column="6" selection-end-line="7" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CheckCredentials.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-1911">
<caret line="15" column="15" selection-start-line="15" selection-start-column="15" selection-end-line="15" selection-end-column="15" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CheckClientCredentialsForAnyScope.php"> <entry file="file://$PROJECT_DIR$/vendor/laravel/passport/src/Http/Middleware/CheckClientCredentialsForAnyScope.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-326"> <state relative-caret-position="-326">
@@ -627,18 +469,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/AuthController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="316">
<caret line="58" column="8" lean-forward="true" selection-start-line="58" selection-start-column="8" selection-end-line="58" selection-end-column="8" />
<folding>
<element signature="e#53#75#0#PHP" expanded="true" />
<element signature="e#635#1206#0#PHP" />
<element signature="e#1682#2311#0#PHP" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/main.js"> <entry file="file://$PROJECT_DIR$/resources/js/main.js">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="682"> <state relative-caret-position="682">
@@ -646,96 +476,6 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="239">
<caret line="54" selection-start-line="54" selection-end-line="54" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="360">
<caret line="156" selection-start-line="156" selection-end-line="156" />
<folding>
<element signature="n#div#0;n#div#0;n#transition#0;n#template#0;n#!!top" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337">
<caret line="308" selection-start-line="308" selection-end-line="308" />
<folding>
<element signature="n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="e#12195#12541#0" />
<element signature="e#12569#13678#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/userAuth.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="112">
<caret line="4" column="26" lean-forward="true" selection-start-line="4" selection-start-column="26" selection-end-line="4" selection-end-column="26" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#190#1582#0" />
<element signature="e#1609#1833#0" />
<element signature="e#1887#2440#0" />
<element signature="e#2499#3057#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/filesView.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="5964">
<caret line="484" column="11" selection-start-line="484" selection-start-column="4" selection-end-line="484" selection-end-column="11" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#594#2318#0" />
<element signature="e#2361#3587#0" />
<element signature="e#3618#4576#0" />
<element signature="e#4621#5347#0" />
<element signature="e#5393#5967#0" />
<element signature="e#6004#6916#0" />
<element signature="e#6954#7608#0" />
<element signature="e#7647#9081#0" />
<element signature="e#9122#9730#0" />
<element signature="e#9773#10524#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/app.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="153">
<caret line="6" column="22" lean-forward="true" selection-start-line="6" selection-start-column="22" selection-end-line="6" selection-end-column="22" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManager.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="580">
<caret line="67" selection-start-line="67" selection-end-line="67" />
<folding>
<element signature="e#617#694#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/routes/web.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="280">
<caret line="19" lean-forward="true" selection-start-line="19" selection-end-line="19" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/FileManagerFile.php"> <entry file="file://$PROJECT_DIR$/app/FileManagerFile.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="337"> <state relative-caret-position="337">
@@ -746,63 +486,351 @@
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/FileManagerController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1372">
<caret line="114" column="44" selection-start-line="114" selection-start-column="44" selection-end-line="114" selection-end-column="44" />
<folding>
<element signature="e#53#80#0#PHP" expanded="true" />
<element signature="e#543#621#0#PHP" />
<element signature="e#888#1784#0#PHP" />
<element signature="e#1891#3121#0#PHP" />
<element signature="e#3257#3861#0#PHP" />
<element signature="e#3967#4797#0#PHP" />
<element signature="e#4902#5942#0#PHP" />
<element signature="e#6047#8159#0#PHP" />
<element signature="e#8299#8601#0#PHP" />
<element signature="e#8692#9510#0#PHP" />
<element signature="e#9589#10594#0#PHP" />
<element signature="e#10695#12782#0#PHP" />
<element signature="e#12859#13911#0#PHP" />
<element signature="e#14009#14137#0#PHP" />
<element signature="e#14227#14962#0#PHP" />
<element signature="e#15052#15493#0#PHP" />
<element signature="e#15562#16097#0#PHP" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/PrivateCLoud/UserAccountController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="2128">
<caret line="76" column="16" lean-forward="true" selection-start-line="76" selection-start-column="16" selection-end-line="76" selection-end-column="16" />
<folding>
<element signature="e#53#66#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore"> <entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="112"> <state relative-caret-position="168">
<caret line="4" column="16" lean-forward="true" selection-start-line="4" selection-start-column="16" selection-end-line="4" selection-end-column="16" /> <caret line="6" column="5" selection-start-line="6" selection-start-column="5" selection-end-line="6" selection-end-column="5" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/routes/api.php"> <entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/VerificationController.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="142"> <state relative-caret-position="224">
<caret line="44" column="20" lean-forward="true" selection-start-line="44" selection-start-column="20" selection-end-line="44" selection-end-column="20" /> <caret line="10" column="6" lean-forward="true" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/ForgotPasswordController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="15" column="6" selection-start-line="15" selection-start-column="6" selection-end-line="15" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/LoginController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="8" column="6" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/RegisterController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="11" column="6" selection-start-line="11" selection-start-column="6" selection-end-line="11" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Controller.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="9" column="6" selection-start-line="9" selection-start-column="6" selection-end-line="9" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/ConfirmPasswordController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="168">
<caret line="8" column="6" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Http/Response.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-59">
<caret line="12" column="6" selection-start-line="12" selection-start-column="6" selection-end-line="12" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Others/UserImageInput.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="219">
<caret line="13" column="22" selection-start-line="13" selection-start-column="22" selection-end-line="13" selection-end-column="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/sass/app.scss">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="196">
<caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/app.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-263">
<caret selection-end-line="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/auth.php">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/AuthController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="442">
<caret line="99" column="37" selection-start-line="99" selection-start-column="37" selection-end-line="99" selection-end-column="37" />
<folding> <folding>
<element signature="e#37#419#0#PHP" /> <element signature="e#45#67#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/StorageSize.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="542">
<caret line="61" column="29" selection-start-line="61" selection-start-column="29" selection-end-line="61" selection-end-column="29" />
<folding>
<element signature="e#893#1351#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/helpers.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="622">
<caret line="106" selection-start-line="106" selection-end-line="106" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/User.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="299">
<caret line="58" column="40" selection-start-line="58" selection-start-column="40" selection-end-line="58" selection-end-column="40" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar/UserHeadline.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="659">
<caret line="105" column="25" selection-start-line="105" selection-start-column="25" selection-end-line="105" selection-end-column="25" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/config/vuefilemanager.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="308">
<caret line="11" column="35" lean-forward="true" selection-start-line="11" selection-start-column="35" selection-end-line="11" selection-end-column="35" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/AppFunctionsController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-186">
<caret line="8" column="6" selection-start-line="8" selection-start-column="6" selection-end-line="8" selection-end-column="6" />
<folding>
<element signature="e#40#68#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/filesView.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="899">
<caret line="257" column="25" selection-start-line="257" selection-start-column="25" selection-end-line="257" selection-end-column="25" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#594#2318#0" />
<element signature="e#2361#3587#0" />
<element signature="e#3618#4576#0" />
<element signature="e#4621#5347#0" />
<element signature="e#5393#5967#0" />
<element signature="e#6004#6916#0" />
<element signature="e#9122#9730#0" />
<element signature="e#9773#10524#0" />
<element signature="e#10580#11078#0" />
<element signature="e#11137#11461#0" />
<element signature="e#11509#12045#0" />
<element signature="e#12090#12150#0" />
<element signature="e#12201#12944#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/helpers.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="420">
<caret line="98" column="41" selection-start-line="98" selection-start-column="41" selection-end-line="98" selection-end-column="41" />
<folding>
<element signature="e#0#33#0" expanded="true" />
<element signature="e#201#287#0" />
<element signature="e#730#1219#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/UserAccountController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="462">
<caret line="95" selection-start-line="95" selection-end-line="95" />
<folding>
<element signature="e#40#53#0#PHP" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/FileManagerController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="550">
<caret line="349" column="13" selection-start-line="349" selection-start-column="13" selection-end-line="349" selection-end-column="13" />
<folding>
<element signature="e#40#67#0#PHP" expanded="true" />
<element signature="e#4913#5953#0#PHP" />
<element signature="e#6058#8399#0#PHP" />
<element signature="e#8539#9019#0#PHP" />
<element signature="e#10117#11122#0#PHP" />
<element signature="e#11223#13508#0#PHP" />
<element signature="e#13585#14637#0#PHP" />
<element signature="e#14735#14952#0#PHP" />
<element signature="e#15042#15927#0#PHP" />
<element signature="e#15996#16531#0#PHP" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/app/Http/Controllers/Auth/ResetPasswordController.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-443">
<caret line="10" column="6" selection-start-line="10" selection-start-column="6" selection-end-line="10" selection-end-column="6" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="252">
<caret line="9" column="72" selection-start-line="9" selection-start-column="61" selection-end-line="9" selection-end-column="72" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/routes/web.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="112">
<caret line="4" column="12" lean-forward="true" selection-start-line="4" selection-start-column="12" selection-end-line="4" selection-end-column="12" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/app.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="392">
<caret line="15" column="20" selection-start-line="15" selection-start-column="4" selection-end-line="15" selection-end-column="20" />
<folding>
<element signature="e#0#25#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/store/modules/userAuth.js">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="281">
<caret line="26" column="25" selection-start-line="26" selection-start-column="25" selection-end-line="26" selection-end-column="25" />
<folding>
<element signature="e#0#25#0" expanded="true" />
<element signature="e#195#532#0" />
<element signature="e#837#1390#0" />
<element signature="e#1449#2007#0" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/vendor/laravel/framework/src/Illuminate/Support/Facades/Auth.php">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Auth.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="10248">
<caret line="540" selection-start-line="540" selection-end-line="540" />
<folding>
<element signature="n#AuthContent#0;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#1;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#2;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#3;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#4;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#5;n#AuthContentWrapper#0;n#template#0;n#!!top" />
<element signature="n#AuthContent#6;n#AuthContentWrapper#0;n#template#0;n#!!top" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/resources/views/index.blade.php"> <entry file="file://$PROJECT_DIR$/resources/views/index.blade.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="224"> <state relative-caret-position="588">
<caret line="8" column="28" selection-start-line="8" selection-start-column="28" selection-end-line="8" selection-end-column="119" /> <caret line="21" column="91" selection-start-line="21" selection-start-column="91" selection-end-line="21" selection-end-column="91" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView/Alert.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="756">
<caret line="27" column="7" selection-start-line="27" selection-start-column="7" selection-end-line="27" selection-end-column="7" />
<folding>
<element signature="n#script#0;n#!!top" />
<element signature="e#1099#1182#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/Sidebar.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="560">
<caret line="73" column="11" lean-forward="true" selection-start-line="73" selection-start-column="11" selection-end-line="73" selection-end-column="11" />
<folding>
<element signature="n#div#0;n#div#0;n#transition#0;n#template#0;n#!!top" />
<element signature="e#3246#3349#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/UserSettings.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="1017">
<caret line="167" selection-start-line="167" selection-end-line="167" />
<folding>
<element signature="e#3504#3594#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManagerComponents/FilesView.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="280">
<caret line="10" column="11" lean-forward="true" selection-start-line="10" selection-start-column="11" selection-end-line="10" selection-end-column="11" />
<folding>
<element signature="e#314#409#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/components/VueFileManager.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="560">
<caret line="20" column="26" selection-start-line="20" selection-start-column="17" selection-end-line="20" selection-end-column="26" />
<folding>
<element signature="e#618#695#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/resources/js/App.vue">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="56">
<caret line="2" column="31" lean-forward="true" selection-start-line="2" selection-start-column="31" selection-end-line="2" selection-end-column="31" />
<folding>
<element signature="n#style#0;n#VueFileManager#0;n#div#0;n#template#0;n#!!top" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/routes/api.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-267">
<caret line="22" selection-start-line="22" selection-end-line="22" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/.env">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="285">
<caret line="30" column="24" lean-forward="true" selection-start-line="30" selection-start-column="24" selection-end-line="30" selection-end-column="24" />
</state> </state>
</provider> </provider>
</entry> </entry>
@@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;
use Response;
class AppFunctionsController extends Controller
{
/**
* Show index page
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
return view("index");
}
/**
* Get file
*
* @param $filename
* @return mixed
*/
public function get_avatar($basename)
{
// Get file path
$path = storage_path() . '/app/avatars/' . $basename;
// Check if file exist
if (!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
// Create response
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
}
}
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\ClientProfile; use App\ClientProfile;
use App\Models\User\UserAttribute; use App\Models\User\UserAttribute;
@@ -10,6 +10,7 @@ use App\User;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Cookie; use Illuminate\Support\Facades\Cookie;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
@@ -54,9 +55,15 @@ class AuthController extends Controller
{ {
$response = Route::dispatch(self::make_request($request)); $response = Route::dispatch(self::make_request($request));
$data = json_decode($response->content(), true); if ($response->isSuccessful()) {
return response('Login Successfull!', 200)->cookie('token', $data['access_token'], 43200); $data = json_decode($response->content(), true);
return response('Login Successfull!', 200)->cookie('token', $data['access_token'], 43200);
} else {
return $response;
}
} }
/** /**
@@ -67,6 +74,9 @@ class AuthController extends Controller
*/ */
public function register(Request $request) public function register(Request $request)
{ {
// Check if account registration is enabled
if (! config('vuefilemanager.registration') ) abort(401);
// Validate request // Validate request
$request->validate([ $request->validate([
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
@@ -81,9 +91,17 @@ class AuthController extends Controller
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
]); ]);
$token = Route::dispatch(self::make_request($request)); $response = Route::dispatch(self::make_request($request));
return $token; if ($response->isSuccessful()) {
$data = json_decode($response->content(), true);
return response('Register Successfull!', 200)->cookie('token', $data['access_token'], 43200);
} else {
return $response;
}
} }
/** /**
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Mail\TestMail; use App\Mail\TestMail;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider; use App\Providers\RouteServiceProvider;
@@ -1,6 +1,6 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
@@ -19,16 +19,6 @@ use Response;
class FileManagerController extends Controller class FileManagerController extends Controller
{ {
/**
* Show index page
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index() {
return view("index");
}
/** /**
* Get trashed files * Get trashed files
* *
@@ -230,17 +220,20 @@ class FileManagerController extends Controller
if ($validator->fails()) abort(400, 'Bad input'); if ($validator->fails()) abort(400, 'Bad input');
// Get user id // Get user id
$user_id = Auth::id(); $user = Auth::user();
// Delete folder // Delete folder
if ($request->type === 'folder') { if ($request->type === 'folder') {
$item = FileManagerFolder::withTrashed() $item = FileManagerFolder::withTrashed()
->with('folders') ->with('folders')
->where('user_id', $user_id) ->where('user_id', $user->id)
->where('unique_id', $request->unique_id) ->where('unique_id', $request->unique_id)
->first(); ->first();
// Remove folder from user favourites
$user->favourites()->detach($request->unique_id);
foreach ($item->files as $file) { foreach ($item->files as $file) {
if ($request->force_delete) { if ($request->force_delete) {
@@ -273,7 +266,7 @@ class FileManagerController extends Controller
if ($request->type === 'file' || $request->type === 'image') { if ($request->type === 'file' || $request->type === 'image') {
$item = FileManagerFile::withTrashed() $item = FileManagerFile::withTrashed()
->where('user_id', $user_id) ->where('user_id', $user->id)
->where('unique_id', $request->unique_id) ->where('unique_id', $request->unique_id)
->first(); ->first();
@@ -302,17 +295,18 @@ class FileManagerController extends Controller
*/ */
public function empty_trash() public function empty_trash()
{ {
// TODO: validacia
// Get user id // Get user id
$user_id = Auth::id(); $user_id = Auth::id();
// Get files and folders
$folders = FileManagerFolder::onlyTrashed()->where('user_id', $user_id)->get(); $folders = FileManagerFolder::onlyTrashed()->where('user_id', $user_id)->get();
$files = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->get(); $files = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->get();
// Force delete every item
$folders->each->forceDelete(); $folders->each->forceDelete();
$files->each->forceDelete(); $files->each->forceDelete();
// Return response
return response('Done!', 200); return response('Done!', 200);
} }
@@ -327,6 +321,7 @@ class FileManagerController extends Controller
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'unique_id' => 'required|integer', 'unique_id' => 'required|integer',
'type' => 'required|string', 'type' => 'required|string',
'to_home' => 'boolean',
]); ]);
// Return error // Return error
@@ -347,6 +342,12 @@ class FileManagerController extends Controller
// Get item // Get item
$item = FileManagerFile::withTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first(); $item = FileManagerFile::withTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first();
// Restore item to home directory
if ($request->has('to_home') && $request->to_home) {
$item->folder_id = 0;
$item->save();
}
} }
// Restore Item // Restore Item
@@ -400,6 +401,10 @@ class FileManagerController extends Controller
*/ */
public function upload_item(Request $request) public function upload_item(Request $request)
{ {
// Check if user can upload
if (config('vuefilemanager.limit_storage_by_capacity') && user_storage_percentage() >= 100)
abort(423, 'You exceed your storage limit!');
// Validate request // Validate request
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'parent_id' => 'required|integer', 'parent_id' => 'required|integer',
@@ -447,7 +452,7 @@ class FileManagerController extends Controller
// Store file // Store file
$new_file = FileManagerFile::create([ $new_file = FileManagerFile::create([
'user_id' => Auth::id(), 'user_id' => Auth::id(),
'name' => pathinfo($file->getClientOriginalName())['filename'], 'name' => pathinfo($file->getClientOriginalName())['filename'],
'basename' => $filename, 'basename' => $filename,
'folder_id' => $folder_id, 'folder_id' => $folder_id,
@@ -514,7 +519,7 @@ class FileManagerController extends Controller
// Get user id // Get user id
$user_id = Auth::id(); $user_id = Auth::id();
return FileManagerFile::where('user_id', $user_id)->where('unique_id', $unique_id)->first(); return FileManagerFile::where('user_id', $user_id)->where('unique_id', $unique_id)->firstOrFail();
} }
/** /**
@@ -525,8 +530,17 @@ class FileManagerController extends Controller
*/ */
public function get_file($filename) public function get_file($filename)
{ {
// Get user id
$user_id = Auth::id();
// Get file record
$file = FileManagerFile::withTrashed()->where('user_id', $user_id)
->where('basename', $filename)
->orWhere('thumbnail', $filename)
->firstOrFail();
// Get file path // Get file path
$path = storage_path() . '/app/file-manager/' . $filename; $path = storage_path() . '/app/file-manager/' . $file->basename;
// Check if file exist // Check if file exist
if (!File::exists($path)) abort(404); if (!File::exists($path)) abort(404);
@@ -544,30 +558,6 @@ class FileManagerController extends Controller
return $response; return $response;
} }
/**
* Get file
*
* @param $filename
* @return mixed
*/
public function get_avatar($basename)
{
// Get file path
$path = storage_path() . '/app/avatars/' . $basename;
// Check if file exist
if (!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
// Create response
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
}
/** /**
* Get unique id * Get unique id
* *
@@ -1,505 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Arr;
use Intervention\Image\ImageManagerStatic as Image;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use App\FileManagerFolder;
use App\FileManagerFile;
use Response;
class FileManagerController extends Controller
{
/**
* Get trashed files
*
* @param Request $request
* @return FileManagerFile[]|\Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection|\Illuminate\Database\Query\Builder[]|\Illuminate\Support\Collection
*/
public function trash() {
// Get folders and files
$folders_trashed = FileManagerFolder::onlyTrashed()->with(['trashed_folders'])->get(['parent_id', 'unique_id', 'name']);
$folders = FileManagerFolder::onlyTrashed()->whereIn('unique_id', filter_folders_ids($folders_trashed))->get();
// Get files trashed
$files_trashed = FileManagerFile::onlyTrashed()->whereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'unique_id'))))->get();
// Collect folders and files to single array
return collect([$folders, $files_trashed])->collapse();
}
/**
* Get directory with files
*
* @return \Illuminate\Support\Collection
*/
public function folder(Request $request, $unique_id)
{
// Get folder trash items
if ( $request->query('trash') ) {
// Get folders and files
$folders = FileManagerFolder::onlyTrashed()->with('parent')->where('parent_id', $unique_id)->get();
$files = FileManagerFile::onlyTrashed()->with('parent')->where('folder_id', $unique_id)->get();
// Collect folders and files to single array
return collect([$folders, $files])->collapse();
}
// Get folders and files
$folders = FileManagerFolder::with('parent')->where('parent_id', $unique_id)->get();
$files = FileManagerFile::with('parent')->where('folder_id', $unique_id)->get();
// Collect folders and files to single array
return collect([$folders, $files])->collapse();
}
/**
* Search files
*
* @param Request $request
* @return \Illuminate\Database\Eloquent\Collection
*/
public function search(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'query' => 'required|string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Search files id db
$searched_files = FileManagerFile::search($request->input('query'))->get();
$searched_folders = FileManagerFolder::search($request->input('query'))->get();
// Collect folders and files to single array
return collect([$searched_folders, $searched_files])->collapse();
}
/**
* Create new folder
*
* @param Request $request
* @return array
*/
public function create_folder(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'parent_id' => 'required|integer',
'name' => 'string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get parent_id from request
$parent_id = $request->parent_id === 0 ? 0 : $request->parent_id;
// Create folder
$folder = FileManagerFolder::create([
'parent_id' => $parent_id,
'name' => $request->has('name') ? $request->input('name') : 'New Folder',
'type' => 'folder',
'unique_id' => $this->get_unique_id(),
]);
// Return new folder
return $folder;
}
/**
* Rename item name
*
* @param Request $request
* @return mixed
*/
public function rename_item(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'unique_id' => 'required|integer',
'name' => 'required|string',
'type' => 'required|string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Update folder name
if ($request->type === 'folder') {
$item = FileManagerFolder::where('unique_id', $request->unique_id)->first();
$item->name = $request->name;
$item->save();
} else {
$item = FileManagerFile::where('unique_id', $request->unique_id)->first();
$item->name = $request->name;
$item->save();
}
// Return updated item
return $item;
}
/**
* Delete item
*
* @param Request $request
* @throws \Exception
*/
public function delete_item(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'unique_id' => 'required|integer',
'type' => 'required|string',
'force_delete' => 'required|boolean',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Delete folder
if ($request->type === 'folder') {
$item = FileManagerFolder::withTrashed()->with('folders')->where('unique_id', $request->unique_id)->first();
foreach ($item->files as $file) {
if ($request->force_delete) {
// Delete file
Storage::disk('local')->delete('/file-manager/' . $file->basename);
// Delete thumbnail if exist
if (!is_null($file->thumbnail)) Storage::disk('local')->delete('/file-manager/' . $file->getOriginal('thumbnail'));
// Delete file permanently
$file->forceDelete();
} else {
// Delete file from visibility
$file->delete();
}
}
// Delete record
if ($request->force_delete) {
$item->forceDelete();
} else {
$item->delete();
}
}
if ($request->type === 'file' || $request->type === 'image') {
$item = FileManagerFile::withTrashed()->where('unique_id', $request->unique_id)->first();
if ($request->force_delete) {
// Delete file
Storage::disk('local')->delete('/file-manager/' . $item->basename);
// Delete thumbnail if exist
if (!is_null($item->thumbnail)) Storage::disk('local')->delete('/file-manager/' . $item->thumbnail);
// Delete file permanently
$item->forceDelete();
} else {
// Delete file from visibility
$item->delete();
}
}
}
/**
* Empty user trash
*
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function empty_trash() {
// TODO: validacia
$folders = FileManagerFolder::onlyTrashed()->get();
$files = FileManagerFile::onlyTrashed()->get();
$folders->each->forceDelete();
$files->each->forceDelete();
return response('Done!', 200);
}
/**
* Restore item from trash
*
* @param Request $request
*/
public function restore_item(Request $request) {
// Validate request
$validator = Validator::make($request->all(), [
'unique_id' => 'required|integer',
'type' => 'required|string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get folder
if ($request->type === 'folder') {
// Get folder
$item = FileManagerFolder::withTrashed()->where('unique_id', $request->unique_id)->first();
}
// Get file
if ($request->type === 'file' || $request->type === 'image') {
// Get item
$item = FileManagerFile::withTrashed()->where('unique_id', $request->unique_id)->first();
}
// Restore Item
$item->restore();
}
/**
* Delete Item
*
* @param Request $request
*/
public function delete_items(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'items' => 'required|json',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
foreach ($request->input('items') as $file) {
if ($file['type'] === 'file' || $file['type'] === 'image') {
$item = FileManagerFile::where('unique_id', $file['unique_id'])->first();
} else {
$item = FileManagerFolder::where('unique_id', $file['unique_id'])->first();
}
// Delete file
Storage::disk('local')->delete('/file-manager/' . $item->basename);
// Delete thumbnail if exist
if (!is_null($item->thumbnail)) {
Storage::disk('local')->delete('/file-manager/' . $item->thumbnail);
}
// Permanently delete file
$item->forceDelete();
}
}
/**
* Upload items
*
* @param Request $request
* @return array
*/
public function upload_item(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'parent_id' => 'required|integer',
'file' => 'required|file',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get parent_id from request
$folder_id = $request->parent_id === 0 ? 0 : $request->parent_id;
$file = $request->file('file');
// File
$filename = Str::random() . '-' . str_replace(' ', '', $file->getClientOriginalName());
$filetype = 'file';
$thumbnail = null;
$filesize = $file->getSize();
$directory = 'file-manager';
// create directory if not exist
if (!Storage::disk('local')->exists($directory)) {
Storage::disk('local')->makeDirectory($directory);
}
// Store to disk
Storage::disk('local')->putFileAs($directory, $file, $filename, 'public');
// Create image thumbnail
if (substr($file->getMimeType(), 0, 5) == 'image') {
$filetype = 'image';
$thumbnail = 'thumbnail-' . $filename;
// Create intervention image
$image = Image::make($file->getRealPath());
$image->resize(256, null, function ($constraint) {
$constraint->aspectRatio();
})->save(null, 90);
// Store thumbnail to s3
Storage::disk('local')->put($directory . '/' . $thumbnail, $image);
}
// Store file
$new_file = FileManagerFile::create([
'name' => pathinfo($file->getClientOriginalName())['filename'],
'basename' => $filename,
'folder_id' => $folder_id,
'mimetype' => $file->getClientOriginalExtension(),
'filesize' => $filesize,
'type' => $filetype,
'thumbnail' => $thumbnail,
'unique_id' => $this->get_unique_id(),
]);
return $new_file;
}
/**
* Move item
*
* @param Request $request
*/
public function move_item(Request $request)
{
// Validate request
$validator = Validator::make($request->all(), [
'from_unique_id' => 'required|integer',
'to_unique_id' => 'required|integer',
'from_type' => 'required|string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
if ($request->from_type === 'folder') {
// Move folder
$item = FileManagerFolder::where('unique_id', $request->from_unique_id)->first();
$item->parent_id = $request->to_unique_id;
} else {
// Move file under new folder
$item = FileManagerFile::where('unique_id', $request->from_unique_id)->first();
$item->folder_id = $request->to_unique_id;
}
$item->update();
}
/**
* Get file record
*
* @param $unique_id
* @return mixed
*/
public function get_file_detail($unique_id)
{
return FileManagerFile::where('unique_id', $unique_id)->first();
}
/**
* Get file
*
* @param $filename
* @return mixed
*/
public function get_file($filename)
{
// Get file path
$path = storage_path() . '/app/file-manager/' . $filename;
// Check if file exist
if (!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
$size = File::size($path);
// Create response
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
$response->header("Content-Disposition", 'attachment; filename=' . $filename);
$response->header("Content-Length", $size);
return $response;
}
/**
* Get file
*
* @param $filename
* @return mixed
*/
public function get_avatar($basename)
{
// Get file path
$path = storage_path() . '/app/avatars/' . $basename;
// Check if file exist
if (!File::exists($path)) abort(404);
$file = File::get($path);
$type = File::mimeType($path);
// Create response
$response = Response::make($file, 200);
$response->header("Content-Type", $type);
return $response;
}
/**
* Get unique id
*
* @return int
*/
private function get_unique_id(): int
{
// Get files and folders
$folders = FileManagerFolder::withTrashed()->get();
$files = FileManagerFile::withTrashed()->get();
// Get last ids
$folders_unique = $folders->isEmpty() ? 0 : $folders->last()->unique_id;
$files_unique = $files->isEmpty() ? 0 : $files->last()->unique_id;
// Count new unique id
$unique_id = $folders_unique > $files_unique ? $folders_unique + 1 : $files_unique + 1;
return $unique_id;
}
}
@@ -1,17 +1,43 @@
<?php <?php
namespace App\Http\Controllers\PrivateCLoud; namespace App\Http\Controllers;
use App\User; use App\User;
use ByteUnits\Metric; use ByteUnits\Metric;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
class UserAccountController extends Controller class UserAccountController extends Controller
{ {
/**
* Get all user data to frontend
*
* @return array|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object|null
*/
public function user()
{
$user_id = Auth::id();
// Get User
$user = User::with(['favourites', 'latest_uploads'])->where('id', $user_id)->first();
return [
'user' => $user->only(['name', 'email', 'avatar']),
'favourites' => $user->favourites->makeHidden(['pivot']),
'latest_uploads' => $user->latest_uploads->makeHidden(['user_id', 'basename']),
'storage' => [
'used' => Metric::bytes($user->used_capacity)->format(),
'capacity' => format_gigabytes(config('vuefilemanager.user_storage_capacity')),
'percentage' => get_storage_fill_percentage($user->used_capacity, config('vuefilemanager.user_storage_capacity')),
],
];
}
/** /**
* Update user profile * Update user profile
@@ -19,9 +45,20 @@ class UserAccountController extends Controller
* @param Request $request * @param Request $request
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response * @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/ */
public function update_profile(Request $request) { public function update_profile(Request $request)
// TODO: validacia {
// Validate request
$validator = Validator::make($request->all(), [
'avatar' => 'file',
'_method' => 'string',
'name' => 'string',
'value' => 'string',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get user
$user = Auth::user(); $user = Auth::user();
if ($request->hasFile('avatar')) { if ($request->hasFile('avatar')) {
@@ -54,36 +91,12 @@ class UserAccountController extends Controller
'password' => ['required', 'string', 'min:6', 'confirmed'], 'password' => ['required', 'string', 'min:6', 'confirmed'],
]); ]);
// Get user
$user = Auth::user(); $user = Auth::user();
// Change and store new password
$user->password = Hash::make($request->input('password')); $user->password = Hash::make($request->input('password'));
$user->save(); $user->save();
}
/**
* Get all user data to frontend
*
* @return array|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|object|null
*/
public function user(Request $request)
{
// Get User
$user = User::with(['favourites', 'latest_uploads'])
->where('id', Auth::id())
->first();
// TODO: dat do configu maximalnu kapacitu pre usera
return [
'user' => $user->only(['name', 'email', 'avatar']),
'favourites' => $user->favourites->makeHidden(['pivot']),
'latest_uploads' => $user->latest_uploads->makeHidden(['user_id', 'basename']),
'storage' => [
'used' => Metric::bytes($user->used_capacity)->format(),
'capacity' => format_gigabytes(10),
'percentage' => get_storage_fill_percentage($user->used_capacity, 10),
],
];
} }
/** /**
@@ -94,7 +107,13 @@ class UserAccountController extends Controller
*/ */
public function add_to_favourites(Request $request) public function add_to_favourites(Request $request)
{ {
// TODO: validation // Validate request
$validator = Validator::make($request->all(), [
'unique_id' => 'required|integer',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get user // Get user
$user = Auth::user(); $user = Auth::user();
@@ -114,7 +133,13 @@ class UserAccountController extends Controller
*/ */
public function remove_from_favourites(Request $request) public function remove_from_favourites(Request $request)
{ {
// TODO: validation // Validate request
$validator = Validator::make($request->all(), [
'unique_id' => 'required|integer',
]);
// Return error
if ($validator->fails()) abort(400, 'Bad input');
// Get user // Get user
$user = Auth::user(); $user = Auth::user();
+12 -2
View File
@@ -73,7 +73,6 @@ function make_single_input($request)
*/ */
function format_gigabytes($megabytes) function format_gigabytes($megabytes)
{ {
return Metric::megabytes($megabytes)->format(); return Metric::megabytes($megabytes)->format();
} }
@@ -86,7 +85,6 @@ function format_gigabytes($megabytes)
*/ */
function get_storage_fill_percentage($used, $capacity) function get_storage_fill_percentage($used, $capacity)
{ {
// Format gigabytes to bytes // Format gigabytes to bytes
$total = intval(Metric::megabytes($capacity)->numberOfBytes()); $total = intval(Metric::megabytes($capacity)->numberOfBytes());
@@ -97,6 +95,18 @@ function get_storage_fill_percentage($used, $capacity)
return number_format((float)$progress, 2, '.', ''); return number_format((float)$progress, 2, '.', '');
} }
/**
* Get user capacity fill percentage
*
* @return string
*/
function user_storage_percentage() {
$user = \Illuminate\Support\Facades\Auth::user();
return get_storage_fill_percentage($user->used_capacity, config('vuefilemanager.user_storage_capacity'));
}
/** /**
* Find all key values in recursive array * Find all key values in recursive array
* *
+13
View File
@@ -0,0 +1,13 @@
<?php
return [
// Enable or disable user account registration
'registration' => true,
// Limit your storage size for every user if this option is enabled
'limit_storage_by_capacity' => true,
// Define user storage capacity in MB. E.g. value 2000 is 2.00GB
'user_storage_capacity' => 100,
];
+61 -1
View File
@@ -52,5 +52,65 @@
"/js/main.2f88baed5888ed7c18ec.hot-update.js": "/js/main.2f88baed5888ed7c18ec.hot-update.js", "/js/main.2f88baed5888ed7c18ec.hot-update.js": "/js/main.2f88baed5888ed7c18ec.hot-update.js",
"/js/main.28750132a4bf9f027f76.hot-update.js": "/js/main.28750132a4bf9f027f76.hot-update.js", "/js/main.28750132a4bf9f027f76.hot-update.js": "/js/main.28750132a4bf9f027f76.hot-update.js",
"/js/main.271855de5d8900e09251.hot-update.js": "/js/main.271855de5d8900e09251.hot-update.js", "/js/main.271855de5d8900e09251.hot-update.js": "/js/main.271855de5d8900e09251.hot-update.js",
"/js/main.a5f3be671e89b7b02488.hot-update.js": "/js/main.a5f3be671e89b7b02488.hot-update.js" "/js/main.a5f3be671e89b7b02488.hot-update.js": "/js/main.a5f3be671e89b7b02488.hot-update.js",
"/js/main.bbe4c1152bcc98c4a824.hot-update.js": "/js/main.bbe4c1152bcc98c4a824.hot-update.js",
"/js/main.51f97d93eec1b080e9e4.hot-update.js": "/js/main.51f97d93eec1b080e9e4.hot-update.js",
"/js/main.aada5ad78910b91cb195.hot-update.js": "/js/main.aada5ad78910b91cb195.hot-update.js",
"/js/main.7e74d89742cb29908548.hot-update.js": "/js/main.7e74d89742cb29908548.hot-update.js",
"/js/main.526354f8026836232108.hot-update.js": "/js/main.526354f8026836232108.hot-update.js",
"/js/main.095fd0ae956d13e7d0eb.hot-update.js": "/js/main.095fd0ae956d13e7d0eb.hot-update.js",
"/js/main.76bb6f7f9e40560681b6.hot-update.js": "/js/main.76bb6f7f9e40560681b6.hot-update.js",
"/js/main.fcee2fd91b74afff90f6.hot-update.js": "/js/main.fcee2fd91b74afff90f6.hot-update.js",
"/js/main.e2abd1caa20ec95707c2.hot-update.js": "/js/main.e2abd1caa20ec95707c2.hot-update.js",
"/js/main.cda452c02c35b348c3d2.hot-update.js": "/js/main.cda452c02c35b348c3d2.hot-update.js",
"/js/main.40bf27ec73a8df23a001.hot-update.js": "/js/main.40bf27ec73a8df23a001.hot-update.js",
"/js/main.d0b2da5a72218c5f2753.hot-update.js": "/js/main.d0b2da5a72218c5f2753.hot-update.js",
"/js/main.5809dfdf155fd5afe07d.hot-update.js": "/js/main.5809dfdf155fd5afe07d.hot-update.js",
"/js/main.1d75e99d7eb6206df763.hot-update.js": "/js/main.1d75e99d7eb6206df763.hot-update.js",
"/js/main.c9c04c5a9a8a925daaee.hot-update.js": "/js/main.c9c04c5a9a8a925daaee.hot-update.js",
"/js/main.0c6e0946cd529be6b378.hot-update.js": "/js/main.0c6e0946cd529be6b378.hot-update.js",
"/js/main.cbbbc2cb67a3d80f764b.hot-update.js": "/js/main.cbbbc2cb67a3d80f764b.hot-update.js",
"/js/main.d4620a39394f417bc81d.hot-update.js": "/js/main.d4620a39394f417bc81d.hot-update.js",
"/js/main.7b849857ab83be0c2c56.hot-update.js": "/js/main.7b849857ab83be0c2c56.hot-update.js",
"/js/main.e42986a050f3c8ba1579.hot-update.js": "/js/main.e42986a050f3c8ba1579.hot-update.js",
"/js/main.a14bb8bca0814982ed2b.hot-update.js": "/js/main.a14bb8bca0814982ed2b.hot-update.js",
"/js/main.182831741990e33f47d9.hot-update.js": "/js/main.182831741990e33f47d9.hot-update.js",
"/js/main.c97a01957f9112ed06da.hot-update.js": "/js/main.c97a01957f9112ed06da.hot-update.js",
"/js/main.684808ff4a9b478521f0.hot-update.js": "/js/main.684808ff4a9b478521f0.hot-update.js",
"/js/main.65773e1cec12c0a6dafd.hot-update.js": "/js/main.65773e1cec12c0a6dafd.hot-update.js",
"/js/main.dc6dbfd05791e0fa3456.hot-update.js": "/js/main.dc6dbfd05791e0fa3456.hot-update.js",
"/js/main.10cde6e22a01f10f3dc1.hot-update.js": "/js/main.10cde6e22a01f10f3dc1.hot-update.js",
"/js/main.cade64e98d9456c9d85b.hot-update.js": "/js/main.cade64e98d9456c9d85b.hot-update.js",
"/js/main.1e1883f028249ee95686.hot-update.js": "/js/main.1e1883f028249ee95686.hot-update.js",
"/js/main.dd41bbb237612b5ef1cf.hot-update.js": "/js/main.dd41bbb237612b5ef1cf.hot-update.js",
"/js/main.6e4d71a8180ef9d0027d.hot-update.js": "/js/main.6e4d71a8180ef9d0027d.hot-update.js",
"/js/main.7bf8c13576d91a63de15.hot-update.js": "/js/main.7bf8c13576d91a63de15.hot-update.js",
"/js/main.00008aac79fa0e306261.hot-update.js": "/js/main.00008aac79fa0e306261.hot-update.js",
"/js/main.c7d5f6f5553c8ac444a1.hot-update.js": "/js/main.c7d5f6f5553c8ac444a1.hot-update.js",
"/js/main.01331afd6e83ce53c9f1.hot-update.js": "/js/main.01331afd6e83ce53c9f1.hot-update.js",
"/js/main.6a97dcd027db22d2fe58.hot-update.js": "/js/main.6a97dcd027db22d2fe58.hot-update.js",
"/js/main.0439ef5b559eec971f46.hot-update.js": "/js/main.0439ef5b559eec971f46.hot-update.js",
"/js/main.13f7f31a870d036f33d4.hot-update.js": "/js/main.13f7f31a870d036f33d4.hot-update.js",
"/js/main.ebb5b8e3a49f7497799e.hot-update.js": "/js/main.ebb5b8e3a49f7497799e.hot-update.js",
"/js/main.d806d5e96490d67c6a87.hot-update.js": "/js/main.d806d5e96490d67c6a87.hot-update.js",
"/js/main.7cf3722d7936494ff475.hot-update.js": "/js/main.7cf3722d7936494ff475.hot-update.js",
"/js/main.821d8599536488baf0f8.hot-update.js": "/js/main.821d8599536488baf0f8.hot-update.js",
"/js/main.f5bd13ae830d4db45212.hot-update.js": "/js/main.f5bd13ae830d4db45212.hot-update.js",
"/js/main.e3f00309dc683e835468.hot-update.js": "/js/main.e3f00309dc683e835468.hot-update.js",
"/js/main.4e070f398ba2602d8b27.hot-update.js": "/js/main.4e070f398ba2602d8b27.hot-update.js",
"/js/main.4407ffbdbd68dbf1b6bb.hot-update.js": "/js/main.4407ffbdbd68dbf1b6bb.hot-update.js",
"/js/main.5460f498775a4edd0bb8.hot-update.js": "/js/main.5460f498775a4edd0bb8.hot-update.js",
"/js/main.b54c6958681b8e316912.hot-update.js": "/js/main.b54c6958681b8e316912.hot-update.js",
"/js/main.4dd9baec87cbba44da1f.hot-update.js": "/js/main.4dd9baec87cbba44da1f.hot-update.js",
"/js/main.15fa523c653a50e421a5.hot-update.js": "/js/main.15fa523c653a50e421a5.hot-update.js",
"/js/main.1a485b15893b04b29e77.hot-update.js": "/js/main.1a485b15893b04b29e77.hot-update.js",
"/js/main.c0d59287145c78d7527b.hot-update.js": "/js/main.c0d59287145c78d7527b.hot-update.js",
"/js/main.406a9b87d350e9f7d1af.hot-update.js": "/js/main.406a9b87d350e9f7d1af.hot-update.js",
"/js/main.47c7327d0c4dd0759676.hot-update.js": "/js/main.47c7327d0c4dd0759676.hot-update.js",
"/js/main.3c58b7fb8eec2d6af53f.hot-update.js": "/js/main.3c58b7fb8eec2d6af53f.hot-update.js",
"/js/main.8ea8151691b11c0808fb.hot-update.js": "/js/main.8ea8151691b11c0808fb.hot-update.js",
"/js/main.07a1de188746117946e4.hot-update.js": "/js/main.07a1de188746117946e4.hot-update.js",
"/js/main.7ef63b397f419a849587.hot-update.js": "/js/main.7ef63b397f419a849587.hot-update.js",
"/js/main.efaa9b6327a9e613cc07.hot-update.js": "/js/main.efaa9b6327a9e613cc07.hot-update.js",
"/js/main.cd194c3416426f2b5369.hot-update.js": "/js/main.cd194c3416426f2b5369.hot-update.js"
} }
+1 -12
View File
@@ -1,6 +1,6 @@
<template> <template>
<div id="app"> <div id="app">
<VueFileManager :config="config" style="height: 100%; width: 100%"/> <VueFileManager style="height: 100%; width: 100%"/>
</div> </div>
</template> </template>
@@ -12,21 +12,10 @@
components: { components: {
VueFileManager VueFileManager
}, },
data() {
return {
config: {
//api: 'https://vuefilemanager.hi5ve.digital/api'
api: 'http://localhost:8000/api'
//api: 'http://172.20.10.5:8000/api'
//api: 'http://192.168.1.131:8000/api'
}
}
}
} }
</script> </script>
<style lang="scss"> <style lang="scss">
@import "@assets/app.scss";
#app { #app {
height: 100%; height: 100%;
+1 -2
View File
@@ -5,6 +5,7 @@
<Auth v-if="isGuest" /> <Auth v-if="isGuest" />
<div v-if="isLogged" id="auth"> <div v-if="isLogged" id="auth">
<!--System alerts--> <!--System alerts-->
<Alert /> <Alert />
@@ -31,11 +32,9 @@
import Auth from '@/components/VueFileManagerComponents/Auth' import Auth from '@/components/VueFileManagerComponents/Auth'
import {ResizeSensor} from 'css-element-queries' import {ResizeSensor} from 'css-element-queries'
import {mapGetters} from 'vuex' import {mapGetters} from 'vuex'
import {events} from '@/bus'
export default { export default {
name: 'VueFileManager', name: 'VueFileManager',
props: ['config'],
components: { components: {
UserSettings, UserSettings,
FilesView, FilesView,
@@ -19,7 +19,7 @@
<AuthButton icon="chevron-right" text="Next Step" :loading="isLoading" :disabled="isLoading"/> <AuthButton icon="chevron-right" text="Next Step" :loading="isLoading" :disabled="isLoading"/>
</ValidationObserver> </ValidationObserver>
<span class="additional-link">Dont have an account? <b <span v-if="config.userRegistration" class="additional-link">Dont have an account? <b
@click="goToAuthPage('sign-up')">Register account.</b></span> @click="goToAuthPage('sign-up')">Register account.</b></span>
</AuthContent> </AuthContent>
@@ -98,10 +98,10 @@
</div> </div>
<div class="block-wrapper"> <div class="block-wrapper">
<label>Confirm your new password:</label> <label>Confirm new password:</label>
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Confirm Password" <ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Confirm Password"
rules="required" v-slot="{ errors }"> rules="required" v-slot="{ errors }">
<input v-model="recoverPassword.newPasswordConfirm" placeholder="Confirm your new password" <input v-model="recoverPassword.newPasswordConfirm" placeholder="Confirm new password"
type="password" :class="{'is-error': errors[0]}"/> type="password" :class="{'is-error': errors[0]}"/>
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span> <span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
</ValidationProvider> </ValidationProvider>
@@ -198,7 +198,7 @@
import AuthContent from '@/components/VueFileManagerComponents/Auth/AuthContent' import AuthContent from '@/components/VueFileManagerComponents/Auth/AuthContent'
import AuthButton from '@/components/VueFileManagerComponents/Auth/AuthButton' import AuthButton from '@/components/VueFileManagerComponents/Auth/AuthButton'
import {required} from 'vee-validate/dist/rules' import {required} from 'vee-validate/dist/rules'
import {events} from '@/bus' import {mapGetters} from 'vuex'
import axios from 'axios' import axios from 'axios'
export default { export default {
@@ -211,24 +211,32 @@
AuthButton, AuthButton,
required, required,
}, },
computed: {
...mapGetters(['config']),
},
watch: {
loginEmail(val) {
this.recoverEmail = val
}
},
data() { data() {
return { return {
isLoading: false, isLoading: false,
checkedAccount: undefined, checkedAccount: undefined,
loginPassword: 'vuefilemanager', loginPassword: '',
loginEmail: 'peterpapp@makingcg.com', loginEmail: '',
recoverEmail: 'peterpapp@makingcg.com', recoverEmail: '',
recoverPassword: { recoverPassword: {
token: undefined, token: undefined,
email: 'peterpapp@makingcg.com', email: '',
newPassword: 'vuefilemanager', newPassword: '',
newPasswordConfirm: 'vuefilemanager', newPasswordConfirm: '',
}, },
register: { register: {
name: 'Hi5Ve Digital', name: '',
email: 'peterpapp@makingcg.com', email: '',
password: 'vuefilemanager', password: '',
password_confirmation: 'vuefilemanager', password_confirmation: '',
}, },
} }
}, },
@@ -299,7 +307,7 @@
email: this.loginEmail, email: this.loginEmail,
password: this.loginPassword, password: this.loginPassword,
}) })
.then(response => { .then(() => {
// End loading // End loading
this.isLoading = false this.isLoading = false
@@ -335,7 +343,7 @@
.post(this.$store.getters.api + '/password/email', { .post(this.$store.getters.api + '/password/email', {
email: this.recoverEmail email: this.recoverEmail
}) })
.then(response => { .then(() => {
// End loading // End loading
this.isLoading = false this.isLoading = false
@@ -371,7 +379,7 @@
password: this.recoverPassword.newPassword, password: this.recoverPassword.newPassword,
password_confirmation: this.recoverPassword.newPasswordConfirm, password_confirmation: this.recoverPassword.newPasswordConfirm,
}) })
.then(response => { .then(() => {
// End loading // End loading
this.isLoading = false this.isLoading = false
@@ -414,16 +422,13 @@
// Send request to get user token // Send request to get user token
axios axios
.post(this.$store.getters.api + '/user/register', this.register) .post(this.$store.getters.api + '/user/register', this.register)
.then(response => { .then(() => {
// End loading // End loading
this.isLoading = false this.isLoading = false
// Store token to localstorage // Set login state
localStorage.setItem('access_token', response.data.access_token) this.$store.commit('SET_AUTHORIZED', true)
// Store token to vuex
this.$store.commit('RETRIEVE_TOKEN', response.data.access_token)
}) })
.catch(error => { .catch(error => {
@@ -467,7 +472,6 @@
<style scoped lang="scss"> <style scoped lang="scss">
@import "@assets/app.scss"; @import "@assets/app.scss";
//@import "@/assets/scss/_forms.scss";
.auth-form { .auth-form {
text-align: center; text-align: center;
@@ -506,6 +510,10 @@
.block-form { .block-form {
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
.block-wrapper label {
text-align: right;
}
} }
.additional-link { .additional-link {
@@ -535,7 +543,6 @@
@media only screen and (max-width: 690px) { @media only screen and (max-width: 690px) {
.auth-form { .auth-form {
//font-size: 90%;
width: 100%; width: 100%;
h1 { h1 {
@@ -109,7 +109,7 @@
right: 0; right: 0;
left: 0; left: 0;
bottom: 0; bottom: 0;
background: rgba(255, 255, 255, 0.5); background: rgba(0, 0, 0, 0.25);
} }
} }
@@ -11,7 +11,7 @@
ref="image" ref="image"
:src="imagePreview" :src="imagePreview"
class="image-preview" class="image-preview"
v-if="data || imagePreview" v-if="imagePreview"
/> />
</div> </div>
</template> </template>
@@ -55,13 +55,13 @@
<TextLabel>Last Uploads</TextLabel> <TextLabel>Last Uploads</TextLabel>
<p class="empty-list" v-if="app.latest_uploads.length == 0">You don't have any latest uploads.</p> <p class="empty-list" v-if="app.latest_uploads.length == 0">You don't have any latest uploads.</p>
<FileListItemThumbnail @dblclick.native="downloadFile(item)" @click.native="showFileDetail(item)"
:file="item" v-for="item in app.latest_uploads" :key="item.unique_id"/> <FileListItemThumbnail @dblclick.native="downloadFile(item)" @click.native="showFileDetail(item)" :file="item" v-for="item in app.latest_uploads" :key="item.unique_id"/>
</div> </div>
</div> </div>
<!--Storage Size Info--> <!--Storage Size Info-->
<StorageSize/> <StorageSize v-if="config.storageLimit"/>
<div v-if="isSmallAppSize" class="log-out-button"> <div v-if="isSmallAppSize" class="log-out-button">
<ButtonBase @click.native="$store.dispatch('logOut')" button-style="danger">Log Out</ButtonBase> <ButtonBase @click.native="$store.dispatch('logOut')" button-style="danger">Log Out</ButtonBase>
@@ -89,7 +89,7 @@
TextLabel, TextLabel,
}, },
computed: { computed: {
...mapGetters(['homeDirectory', 'app', 'appSize']), ...mapGetters(['homeDirectory', 'app', 'appSize', 'config']),
isSmallAppSize() { isSmallAppSize() {
return this.appSize === 'small' return this.appSize === 'small'
} }
@@ -174,7 +174,6 @@
<style scoped lang="scss"> <style scoped lang="scss">
@import "@assets/app.scss"; @import "@assets/app.scss";
#sidebar { #sidebar {
position: relative; position: relative;
flex: 0 0 295px; flex: 0 0 295px;
@@ -201,39 +200,11 @@
.menu-list-wrapper { .menu-list-wrapper {
margin-bottom: 25px; margin-bottom: 25px;
&.favourites {
&.is-dragenter {
.menu-list {
border: 2px dashed $theme;
border-radius: 8px;
}
}
.menu-list {
border: 2px dashed transparent;
.menu-list-item {
padding: 10px 13px;
.icon {
@include font-size(20);
width: 20px;
path {
fill: $theme;
}
}
}
}
}
.menu-list { .menu-list {
.menu-list-item { .menu-list-item {
display: block; display: block;
padding: 10px 13px; padding: 10px 15px;
@include transition(150ms); @include transition(150ms);
cursor: pointer; cursor: pointer;
position: relative; position: relative;
@@ -261,7 +232,7 @@
.icon { .icon {
@include font-size(13); @include font-size(13);
width: 15px; width: 15px;
margin-right: 15px; margin-right: 9px;
vertical-align: middle; vertical-align: middle;
path { path {
@@ -295,6 +266,34 @@
} }
} }
&.favourites {
&.is-dragenter {
.menu-list {
border: 2px dashed $theme;
border-radius: 8px;
}
}
.menu-list {
border: 2px dashed transparent;
.menu-list-item {
padding: 10px 13px;
.icon {
@include font-size(20);
width: 20px;
path {
fill: $theme;
}
}
}
}
}
.empty-list { .empty-list {
@include font-size(12); @include font-size(12);
color: $text-muted; color: $text-muted;
@@ -4,7 +4,7 @@
<span class="title">Storage</span> <span class="title">Storage</span>
<span class="size">{{ app.storage.used }} of {{ app.storage.capacity }} Used</span> <span class="size">{{ app.storage.used }} of {{ app.storage.capacity }} Used</span>
</div> </div>
<ProgressBar :progress="app.storage.percentage"/> <ProgressBar :progress="app.storage.percentage" :class="{'is-exceeded': app.storage.percentage > 100}"/>
</div> </div>
</template> </template>
@@ -57,6 +57,13 @@
} }
} }
.progress-bar {
&.is-exceeded /deep/ span {
background: $danger;
}
}
@media only screen and (max-width: 690px) { @media only screen and (max-width: 690px) {
.storage-size { .storage-size {
@@ -103,7 +103,7 @@
.email { .email {
@include font-size(13); @include font-size(13);
color: $light_text; color: $theme;
display: block; display: block;
margin-top: 2px; margin-top: 2px;
} }
@@ -100,6 +100,8 @@
}, },
watch: { watch: {
name: debounce(function (val) { name: debounce(function (val) {
if (val === '') return
this.$store.commit('UPDATE_NAME', val) this.$store.commit('UPDATE_NAME', val)
}, 300), }, 300),
}, },
@@ -119,19 +121,11 @@
if (!isValid) return; if (!isValid) return;
// Start loading
//this.isLoading = true
// Send request to get user reset link // Send request to get user reset link
axios axios
.post(this.$store.getters.api + '/user/password', { .post(this.$store.getters.api + '/user/password', {
password: this.newPassword, password: this.newPassword,
password_confirmation: this.newPasswordConfirmation, password_confirmation: this.newPasswordConfirmation,
},
{
headers: {
'Authorization': 'Bearer ' + this.$store.getters.token
}
}) })
.then(() => { .then(() => {
@@ -147,9 +141,6 @@
title: 'Your password was changed!', title: 'Your password was changed!',
message: 'So now, you have awesome new password.', message: 'So now, you have awesome new password.',
}) })
// End loading
//this.isLoading = false
}) })
.catch(error => { .catch(error => {
@@ -162,9 +153,6 @@
}); });
} }
} }
// End loading
//this.isLoading = false
}) })
} }
}, },
@@ -178,7 +166,6 @@
<style lang="scss"> <style lang="scss">
@import "@assets/app.scss"; @import "@assets/app.scss";
.avatar-upload { .avatar-upload {
display: flex; display: flex;
align-items: center; align-items: center;
+23 -14
View File
@@ -14,16 +14,15 @@ const Helpers = {
Vue.prototype.$updateText = debounce(function (route, name, value) { Vue.prototype.$updateText = debounce(function (route, name, value) {
axios.put(this.$store.getters.api + route, {name, value}, { if (value === '') return
headers: {
'Authorization': 'Bearer ' + this.$store.getters.token axios.put(this.$store.getters.api + route, {name, value})
}
})
.then(response => {
console.log('done!');
})
.catch(error => { .catch(error => {
console.log('shit!'); events.$emit('alert:open', {
title: 'Whooops, something went wrong :(',
message:
"Something went wrong and we can't continue. Please contact us."
})
}) })
}, 300) }, 300)
@@ -39,14 +38,14 @@ const Helpers = {
axios.post(this.$store.getters.api + route, formData, { axios.post(this.$store.getters.api + route, formData, {
headers: { headers: {
'Content-Type': 'multipart/form-data', 'Content-Type': 'multipart/form-data',
'Authorization': 'Bearer ' + this.$store.getters.token,
} }
}) })
.then(response => {
console.log('done!');
})
.catch(error => { .catch(error => {
console.log('shit!'); events.$emit('alert:open', {
title: 'Whooops, something went wrong :(',
message:
"Something went wrong and we can't continue. Please contact us."
})
}) })
} }
@@ -64,6 +63,16 @@ const Helpers = {
// Prevent submit empty files // Prevent submit empty files
if (files && files.length == 0) return if (files && files.length == 0) return
if (this.$store.getters.app.storage.percentage >= 100) {
events.$emit('alert:open', {
title: 'Whooops, you exceed your storage limit :(',
message:
"Please contact your administrator to change your limit."
})
return
}
let fileCount = files.length let fileCount = files.length
let fileCountSucceed = 1 let fileCountSucceed = 1
+20 -6
View File
@@ -175,18 +175,21 @@ const actions = {
}) })
}) })
}, },
removeItem: (context, data) => { removeItem: ({commit, state, getters}, data) => {
// Remove file // Remove file
context.commit('REMOVE_ITEM', data.unique_id) commit('REMOVE_ITEM', data.unique_id)
if (data.type === 'file') context.commit('REMOVE_ITEM_FROM_RECENT_UPLOAD', data.unique_id)
if (data.type === 'folder') context.commit('REMOVE_ITEM_FROM_FAVOURITES', data.unique_id) if (data.type === 'file' || data.type === 'image')
commit('REMOVE_ITEM_FROM_RECENT_UPLOAD', data.unique_id)
if (data.type === 'folder')
commit('REMOVE_ITEM_FROM_FAVOURITES', data.unique_id)
// Remove file preview // Remove file preview
context.commit('CLEAR_FILEINFO_DETAIL') commit('CLEAR_FILEINFO_DETAIL')
axios axios
.post(context.getters.api + '/remove-item', { .post(getters.api + '/remove-item', {
type: data.type, type: data.type,
unique_id: data.unique_id, unique_id: data.unique_id,
force_delete: data.deleted_at ? true : false force_delete: data.deleted_at ? true : false
@@ -201,6 +204,12 @@ const actions = {
}) })
}, },
restoreItem: (context, item) => { restoreItem: (context, item) => {
let restoreToHome = false
// Check if file can be restored to home directory
if (context.state.currentFolder.location === 'trash' && item.type !== 'folder') restoreToHome = true
// Remove file // Remove file
context.commit('REMOVE_ITEM', item.unique_id) context.commit('REMOVE_ITEM', item.unique_id)
@@ -211,6 +220,7 @@ const actions = {
.post(context.getters.api + '/restore-item', { .post(context.getters.api + '/restore-item', {
type: item.type, type: item.type,
unique_id: item.unique_id, unique_id: item.unique_id,
to_home: restoreToHome,
}) })
.catch(() => { .catch(() => {
// Show error message // Show error message
@@ -243,6 +253,10 @@ const actions = {
.then(response => { .then(response => {
context.commit('ADD_NEW_ITEMS', response.data) context.commit('ADD_NEW_ITEMS', response.data)
context.commit('UPDATE_RECENT_UPLOAD', response.data) context.commit('UPDATE_RECENT_UPLOAD', response.data)
context.commit(
'UPLOADING_FILE_PROGRESS',
0
)
resolve(response) resolve(response)
}) })
.catch(error => { .catch(error => {
+4 -3
View File
@@ -21,13 +21,14 @@ const actions = {
} }
) )
}, },
logOut: (context) => { logOut: ({getters, commit}) => {
axios axios
.get(context.getters.api + '/logout') .get(getters.api + '/logout')
.then(() => { .then(() => {
// Commit Remove Access Token from vuex storage // Commit Remove Access Token from vuex storage
context.commit('DESTROY_DATA') commit('DESTROY_DATA')
commit('SET_CURRENT_VIEW', 'files')
}) })
}, },
addToFavourites: (context, folder_unique_id) => { addToFavourites: (context, folder_unique_id) => {
+1 -1
View File
@@ -4,4 +4,4 @@
// Variables // Variables
@import 'vue-file-manager/_variables'; @import 'vue-file-manager/_variables';
@import 'vue-file-manager/_mixins'; @import 'vue-file-manager/_mixins';
@import 'vue-file-manager/_forms'; //@import 'vue-file-manager/_forms';
+3 -1
View File
@@ -16,8 +16,10 @@
<script> <script>
let config = { let config = {
hasAuthCookie: {{ Cookie::has('token') ? 1 : 0 }},
api: '{{ url('/api') }}', api: '{{ url('/api') }}',
hasAuthCookie: {{ Cookie::has('token') ? 1 : 0 }},
userRegistration: {{ config('vuefilemanager.registration') ? 1 : 0 }},
storageLimit: {{ config('vuefilemanager.limit_storage_by_capacity') ? 1 : 0 }},
} }
</script> </script>
+28 -42
View File
@@ -1,7 +1,4 @@
<?php <?php
use Illuminate\Http\Request;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| API Routes | API Routes
@@ -13,16 +10,6 @@ use Illuminate\Http\Request;
| |
*/ */
/*
|--------------------------------------------------------------------------
| Public API Routes for no needed user accounts
|--------------------------------------------------------------------------
*/
Route::group(['middleware' => ['api']], function () {
});
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Public API Routes | Public API Routes
@@ -30,14 +17,14 @@ Route::group(['middleware' => ['api']], function () {
*/ */
Route::group(['middleware' => ['api']], function () { Route::group(['middleware' => ['api']], function () {
// User authentification
Route::post('/user/check', 'PrivateCloud\AuthController@check_account');
Route::post('/user/register', 'PrivateCloud\AuthController@register');
Route::post('/user/login', 'PrivateCloud\AuthController@login');
// User reset password // User reset password
Route::post('/password/email', 'PrivateCloud\ForgotPasswordController@sendResetLinkEmail'); Route::post('/password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
Route::post('/password/reset', 'PrivateCloud\ResetPasswordController@reset'); Route::post('/password/reset', 'Auth\ResetPasswordController@reset');
// User authentification
Route::post('/user/check', 'Auth\AuthController@check_account');
Route::post('/user/register', 'Auth\AuthController@register');
Route::post('/user/login', 'Auth\AuthController@login');
}); });
/* /*
@@ -46,30 +33,29 @@ Route::group(['middleware' => ['api']], function () {
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
*/ */
Route::group(['middleware' => ['throttle:500,1', 'auth:api', 'auth.cookie']], function () {
Route::get('/file/{name}', 'FileManagerController@get_file')->name('file');
});
Route::group(['middleware' => ['auth:api', 'auth.cookie']], function () { Route::group(['middleware' => ['auth:api', 'auth.cookie']], function () {
// User account // File route
Route::post('/user/password', 'PrivateCloud\UserAccountController@change_password'); Route::get('/file/{name}', 'FileManagerController@get_file')->name('file');
Route::put('/user/profile', 'PrivateCloud\UserAccountController@update_profile');
Route::get('/user', 'PrivateCloud\UserAccountController@user'); // User account routes
Route::get('/logout', 'PrivateCloud\AuthController@logout'); Route::post('/user/password', 'UserAccountController@change_password');
Route::put('/user/profile', 'UserAccountController@update_profile');
Route::get('/logout', 'Auth\AuthController@logout');
Route::get('/user', 'UserAccountController@user');
// File manager routes // File manager routes
Route::get('/folder/{unique_id}', 'PrivateCloud\FileManagerController@folder')->where('unique_id', '[0-9]+'); Route::get('/folder/{unique_id}', 'FileManagerController@folder')->where('unique_id', '[0-9]+');
Route::post('/remove-from-favourites', 'PrivateCloud\UserAccountController@remove_from_favourites'); Route::post('/remove-from-favourites', 'UserAccountController@remove_from_favourites');
Route::get('/file-detail/{unique_id}', 'PrivateCloud\FileManagerController@get_file_detail'); Route::get('/file-detail/{unique_id}', 'FileManagerController@get_file_detail');
Route::post('/add-to-favourites', 'PrivateCloud\UserAccountController@add_to_favourites'); Route::post('/add-to-favourites', 'UserAccountController@add_to_favourites');
Route::post('/create-folder', 'PrivateCloud\FileManagerController@create_folder'); Route::post('/create-folder', 'FileManagerController@create_folder');
Route::delete('/empty-trash', 'PrivateCloud\FileManagerController@empty_trash'); Route::delete('/empty-trash', 'FileManagerController@empty_trash');
Route::post('/restore-item', 'PrivateCloud\FileManagerController@restore_item'); Route::post('/restore-item', 'FileManagerController@restore_item');
Route::post('/rename-item', 'PrivateCloud\FileManagerController@rename_item'); Route::post('/rename-item', 'FileManagerController@rename_item');
Route::post('/remove-item', 'PrivateCloud\FileManagerController@delete_item'); Route::post('/remove-item', 'FileManagerController@delete_item');
Route::post('/upload-file', 'PrivateCloud\FileManagerController@upload_item'); Route::post('/upload-file', 'FileManagerController@upload_item');
Route::post('/move-item', 'PrivateCloud\FileManagerController@move_item'); Route::post('/move-item', 'FileManagerController@move_item');
Route::get('/search', 'PrivateCloud\FileManagerController@search'); Route::get('/search', 'FileManagerController@search');
Route::get('/trash', 'PrivateCloud\FileManagerController@trash'); Route::get('/trash', 'FileManagerController@trash');
}); });
+4 -5
View File
@@ -11,9 +11,8 @@
| |
*/ */
// Get File // Get user avatar
Route::get('/avatars/{avatar}', 'FileManagerController@get_avatar')->name('avatar'); Route::get('/avatars/{avatar}', 'AppFunctionsController@get_avatar')->name('avatar');
// Index Page
// Landing Page Route::get('/{any?}', 'AppFunctionsController@index')->where('any', '.*');
Route::get('/', 'PrivateCloud\FileManagerController@index');