mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +00:00
controller refactoring part 1
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -1,76 +1,275 @@
|
||||
{
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js?id=94c9a052e6e82569e862",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=ebb51a58a95a14da110b",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=f3dc8d59297f76bf9573",
|
||||
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=41b42ac4d0a735daa6cc",
|
||||
"/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=6dc32b9b0f6d281d6a26",
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=dd14a1d618e603d300fb",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=87a13ef68b45d7543699",
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=eb1b0461791657cc54ce",
|
||||
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=bc26c252f2ba5f4d6360",
|
||||
"/js/main.js": "/js/main.js?id=98ab1a7696f94bf7dd3d",
|
||||
"/css/app.css": "/css/app.css?id=a8f94d0c5a6f4a1185b1",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=9c64b111c6911aae7e15",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=86b763ce14425cc51947",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=22ed25d12fde931a6384",
|
||||
"/chunks/app-billings.js": "/chunks/app-billings.js?id=6f98598d588c394bbaf6",
|
||||
"/chunks/app-email.js": "/chunks/app-email.js?id=74dfa50e070b752372de",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=03834d79455e3e9f6c72",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=e5ab59656bb2c1aaefa5",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=4fdbd34bad92dccaf31a",
|
||||
"/chunks/app-payments.js": "/chunks/app-payments.js?id=efece9c92dea88c05578",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=46aed146ad695e6530b7",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=ab0d2bd0a378d29f10b4",
|
||||
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=2cfda34a5cbcfa80b125",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=9ccd4c02178f4b6e7278",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=7ad3557be542c00d77fd",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=ae19be8c8bc403c815f3",
|
||||
"/chunks/database.js": "/chunks/database.js?id=ffc140d6a6ea7963cd40",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=8b23935ea7aa9730902a",
|
||||
"/chunks/email-verified.js": "/chunks/email-verified.js?id=bd5e569c62dc884f4a87",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=b78dc7d4a781b8ce1e6b",
|
||||
"/chunks/files.js": "/chunks/files.js?id=9a658936883b34ee484a",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=5af9e720ce6b3a566d17",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=b4f57d89ed27bc70b335",
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=fca5d397ce7e81d2388f",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=9c9facbd02511ca391de",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=1bfdb163e64dd0103e6c",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=929b8c99895129e7765b",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=c04980a769c53eac9702",
|
||||
"/chunks/plan-create.js": "/chunks/plan-create.js?id=a4b5a191f52028490d20",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=82741fb5261f08150514",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=eb631dd60eda973ddad4",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=24aa1d29e50b816ad886",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=974287b8ed7b22ca9d9d",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=7db1002700c23a934dd8",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=1abb937525ea9941f58d",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=3c4c7dfede2f235b459a",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=734e5db74f384924e699",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=2299c2992957c6e40719",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=45a74cda818069e5b06b",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=ed1689c797ac4ac30444",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=c9cb709ac5bec8a657c6",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=2c8487ac06bb589aa5b7",
|
||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=f8796db5378f62399f23",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=d60972a2216523642850",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=0c7a3d4f575dbf4f21b0",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=86820a408438c3513b20",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=72b0747c31534d3235e3",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=03fb36b0d38a3218221f",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=c0cee9fd1b07d47a5645",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=fba111e00801bb09ab4f",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=08b7d59384397b00aedf",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=1ecd54723469b1976017",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=3e480de6985a816bca2f",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=c86dc4d2baa0347eb760",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=dae14e5e76e0b93e6a73",
|
||||
"/chunks/user.js": "/chunks/user.js?id=91c3e68c04873712f235",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=cbe7a7de7f1f0b7900f2",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=dc708437ba1e5ebc0a0d",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=12c84179aaa9cebcb255",
|
||||
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=777a07bc5ec4f185477e",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=3214eb9dadcbeb1e685f",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=92037267138bb75304ec",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=9a9e247c61190a3ef745",
|
||||
"/chunks/users.js": "/chunks/users.js?id=9d3aef23a49ec78dfef0"
|
||||
"/js/main.js": "/js/main.js",
|
||||
"/css/app.css": "/css/app.css",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=baf8a45b3c1d04f09229",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=d8cce8af7d4d0650d44b",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=d21b5946c88a87e9099d",
|
||||
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a7b1c983.js?id=b80fc9fc5b08a9c60e2e",
|
||||
"/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/~eeab5771.js?id=b26eff2899df7f85229d",
|
||||
"/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=146db62ff2aa25c39386",
|
||||
"/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared/file-browser.js?id=e23621e57bab3e9e349a",
|
||||
"/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=4da2e03f6f01c274a7cc",
|
||||
"/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=875730e50ad4c6f2af74",
|
||||
"/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=d5f38340fc411f440efd",
|
||||
"/chunks/app-appearance.js": "/chunks/app-appearance.js?id=b709bf1d7c3cd24f9529",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~605f4c49.js?id=075ff381293e1a20d167",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.js?id=4261df947b3c3857b029",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~b9e5655a.js?id=b6c9565875974d8c350c",
|
||||
"/chunks/app-billings.js": "/chunks/app-billings.js?id=b23ac97d9e65beff5fc6",
|
||||
"/chunks/app-email.js": "/chunks/app-email.js?id=35afede5ea121718e2cc",
|
||||
"/chunks/app-index.js": "/chunks/app-index.js?id=0d8a74f6041001c36ab3",
|
||||
"/chunks/app-language.js": "/chunks/app-language.js?id=4fcdf80a303651cbbf71",
|
||||
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~824d674f.js?id=2551061f37c2a8056921",
|
||||
"/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~0d12a0aa.js": "/chunks/app-language~chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/s~0d12a0aa.js?id=47e97b1952f5eef3bb34",
|
||||
"/chunks/app-others.js": "/chunks/app-others.js?id=a16de82f2298df235166",
|
||||
"/chunks/app-payments.js": "/chunks/app-payments.js?id=245920077be074208693",
|
||||
"/chunks/app-settings.js": "/chunks/app-settings.js?id=d57e806c59d1aef2eb3a",
|
||||
"/chunks/app-setup.js": "/chunks/app-setup.js?id=e3695433cd0846d6584e",
|
||||
"/chunks/billings-detail.js": "/chunks/billings-detail.js?id=91a83745586b01dc470b",
|
||||
"/chunks/contact-us.js": "/chunks/contact-us.js?id=67b977184f0744593de9",
|
||||
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=2a8def187ec322eb760e",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=72d02c781aa8e6295069",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=a7aef88def02bf2fec08",
|
||||
"/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=1027aa9c1e090b196d29",
|
||||
"/chunks/database.js": "/chunks/database.js?id=75a834593eb79ffbbf4c",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=1141f8e183483da82e8a",
|
||||
"/chunks/email-verified.js": "/chunks/email-verified.js?id=60a7eabffc13b2fe48e0",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=8602919284450d1331ca",
|
||||
"/chunks/files.js": "/chunks/files.js?id=54c6dddb471986e202f3",
|
||||
"/chunks/files~chunks/platform~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared/file-browser.js?id=f97243d3db23c6255bc5",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser.js?id=3b96cba1e5482e4c33d4",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=48f4f2c0aa3064162ad9",
|
||||
"/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js": "/chunks/files~chunks/settings-subscription~chunks/shared/file-browser~chunks/user-subscription.js?id=1b96ff16168a192ea787",
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=87253c5f59242e420579",
|
||||
"/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=a6be7116bbdadfb8b1cc",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=96019e230f0c5b59478a",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=5a299216398f59a4947b",
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=0fe6c45de3fe3c75bd04",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=35179ba2b74cdaf74492",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=3f0c127b00d113541acc",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=2121cd2ed1ba9b11e678",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=7b3c7ee8c586e73fe65a",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=c4cc3da1bedaa9139087",
|
||||
"/chunks/plan-create.js": "/chunks/plan-create.js?id=a94d9749db6f76f7a76b",
|
||||
"/chunks/plan-delete.js": "/chunks/plan-delete.js?id=f00946b7df419813f099",
|
||||
"/chunks/plan-settings.js": "/chunks/plan-settings.js?id=dbc08f8cdc23900ef40a",
|
||||
"/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=8c4b655b9286e06894c5",
|
||||
"/chunks/plans.js": "/chunks/plans.js?id=2b26173a02ed9f86e875",
|
||||
"/chunks/platform.js": "/chunks/platform.js?id=377133abe0c9b3471bda",
|
||||
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be3d7cf51585313cf53b",
|
||||
"/chunks/profile.js": "/chunks/profile.js?id=41b536880e846017d2d0",
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=fd25990d1ccec0294602",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b35e751cdc1946a4fb60",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=b7d5d142d6e4cae354b0",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=0e818baec7f92c7fa542",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=eab2781e9935230c6971",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=b01b17b523e99064d8ca",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=1a1c7f6e9c2857ec941f",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=682f4f690ac252a78a3a",
|
||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=4f1793d53633a2c4cc18",
|
||||
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=f5aaffe3aa073cb2ee19",
|
||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=41d3478184ec24644a1c",
|
||||
"/chunks/shared.js": "/chunks/shared.js?id=7524b7a783d4aed23794",
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=bfdf9bb904d354bdcbd1",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=0f6c34512740fca7e007",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=7886247bb35deada28a2",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=799cae3044c4c56debf8",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=b30b10ca09b115efc6ca",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=3beb031ba99961e8c51c",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=4ae406cdb5805d9c4a45",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=a09dc140a3914fb64a1a",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=0de6296ee18d466dca13",
|
||||
"/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=43888143d0a6afe67d7a",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=5979a154f760a992e617",
|
||||
"/chunks/user.js": "/chunks/user.js?id=41076be9126702330159",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=0d0040fbb5361bb061d6",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=ecebc7e50b64744420c3",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=7ae038f6b4a4683c5bdb",
|
||||
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=1395c30e08946026fbc4",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=f5fa3532fb7f4f5f2707",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=e19c7dee4ef5eb38a075",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=3f0b6e06821fa74183d9",
|
||||
"/chunks/users.js": "/chunks/users.js?id=71de2e012c4c566a8ec3",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~6c99cc74.js?id=0a6998f62a162c08a48f",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~cfac0ed6.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~cfac0ed6.js?id=f66c7653a087fe1f3320",
|
||||
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared/file-browser~chunks/shared/single-file.js?id=9d10953d3b088324dfe3",
|
||||
"/vendors~chunks/platform~chunks/shared.js": "/vendors~chunks/platform~chunks/shared.js?id=7d09e0b0658e140a7ffa",
|
||||
"/chunks/settings.17ab36c66821f7b6866c.hot-update.js": "/chunks/settings.17ab36c66821f7b6866c.hot-update.js",
|
||||
"/chunks/settings-password.17ab36c66821f7b6866c.hot-update.js": "/chunks/settings-password.17ab36c66821f7b6866c.hot-update.js",
|
||||
"/chunks/settings.53e438519217d537096f.hot-update.js": "/chunks/settings.53e438519217d537096f.hot-update.js",
|
||||
"/chunks/settings.6f5297b3203e182729f6.hot-update.js": "/chunks/settings.6f5297b3203e182729f6.hot-update.js",
|
||||
"/chunks/settings.f5ce69eb059a0f7d89cd.hot-update.js": "/chunks/settings.f5ce69eb059a0f7d89cd.hot-update.js",
|
||||
"/chunks/settings.19e7a6e5f8dc4db80b10.hot-update.js": "/chunks/settings.19e7a6e5f8dc4db80b10.hot-update.js",
|
||||
"/js/main.dbe9b9568031b99c5d98.hot-update.js": "/js/main.dbe9b9568031b99c5d98.hot-update.js",
|
||||
"/chunks/files~chunks/platform~chunks/settings~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/settings~chunks/shared/file-browser.js?id=3b7644fd6adcc9225ced",
|
||||
"/chunks/settings.dbe9b9568031b99c5d98.hot-update.js": "/chunks/settings.dbe9b9568031b99c5d98.hot-update.js",
|
||||
"/js/main.c6082624d9f9e6d06e86.hot-update.js": "/js/main.c6082624d9f9e6d06e86.hot-update.js",
|
||||
"/chunks/files~chunks/shared/file-browser.c6082624d9f9e6d06e86.hot-update.js": "/chunks/files~chunks/shared/file-browser.c6082624d9f9e6d06e86.hot-update.js",
|
||||
"/chunks/platform.c6082624d9f9e6d06e86.hot-update.js": "/chunks/platform.c6082624d9f9e6d06e86.hot-update.js",
|
||||
"/chunks/settings.c6082624d9f9e6d06e86.hot-update.js": "/chunks/settings.c6082624d9f9e6d06e86.hot-update.js",
|
||||
"/js/main.58cc86ea6ab750cde2bf.hot-update.js": "/js/main.58cc86ea6ab750cde2bf.hot-update.js",
|
||||
"/chunks/files~chunks/shared/file-browser.58cc86ea6ab750cde2bf.hot-update.js": "/chunks/files~chunks/shared/file-browser.58cc86ea6ab750cde2bf.hot-update.js",
|
||||
"/chunks/platform.58cc86ea6ab750cde2bf.hot-update.js": "/chunks/platform.58cc86ea6ab750cde2bf.hot-update.js",
|
||||
"/chunks/settings.58cc86ea6ab750cde2bf.hot-update.js": "/chunks/settings.58cc86ea6ab750cde2bf.hot-update.js",
|
||||
"/js/main.022805217285043b46e8.hot-update.js": "/js/main.022805217285043b46e8.hot-update.js",
|
||||
"/chunks/settings.022805217285043b46e8.hot-update.js": "/chunks/settings.022805217285043b46e8.hot-update.js",
|
||||
"/chunks/settings.debd97760771aeabba49.hot-update.js": "/chunks/settings.debd97760771aeabba49.hot-update.js",
|
||||
"/chunks/settings.f6b1869429e318c00591.hot-update.js": "/chunks/settings.f6b1869429e318c00591.hot-update.js",
|
||||
"/chunks/settings.d10cfc4f45fda477d7df.hot-update.js": "/chunks/settings.d10cfc4f45fda477d7df.hot-update.js",
|
||||
"/chunks/settings-password.685d1a0c206e8764d2af.hot-update.js": "/chunks/settings-password.685d1a0c206e8764d2af.hot-update.js",
|
||||
"/chunks/settings.65e3452a376df1c6e884.hot-update.js": "/chunks/settings.65e3452a376df1c6e884.hot-update.js",
|
||||
"/chunks/settings.36fc0ac40984d06fe6df.hot-update.js": "/chunks/settings.36fc0ac40984d06fe6df.hot-update.js",
|
||||
"/chunks/settings.e6a83b31c5b460718694.hot-update.js": "/chunks/settings.e6a83b31c5b460718694.hot-update.js",
|
||||
"/chunks/settings.4a002fab9a0600dea828.hot-update.js": "/chunks/settings.4a002fab9a0600dea828.hot-update.js",
|
||||
"/chunks/settings.b5bec99fd23ec2965a2a.hot-update.js": "/chunks/settings.b5bec99fd23ec2965a2a.hot-update.js",
|
||||
"/chunks/settings.4a199f4535b38c2c4654.hot-update.js": "/chunks/settings.4a199f4535b38c2c4654.hot-update.js",
|
||||
"/chunks/settings.0ef802fd5678297a854e.hot-update.js": "/chunks/settings.0ef802fd5678297a854e.hot-update.js",
|
||||
"/chunks/settings.5f5b672fb39e0d145a43.hot-update.js": "/chunks/settings.5f5b672fb39e0d145a43.hot-update.js",
|
||||
"/chunks/settings.7e6d3073a140f1b85706.hot-update.js": "/chunks/settings.7e6d3073a140f1b85706.hot-update.js",
|
||||
"/chunks/settings.2e6e7181135688eb9895.hot-update.js": "/chunks/settings.2e6e7181135688eb9895.hot-update.js",
|
||||
"/chunks/settings.caf2daafbba194301628.hot-update.js": "/chunks/settings.caf2daafbba194301628.hot-update.js",
|
||||
"/chunks/settings.d8e4f0a17901aa0dcb5c.hot-update.js": "/chunks/settings.d8e4f0a17901aa0dcb5c.hot-update.js",
|
||||
"/chunks/settings.448ed3b222a05345f252.hot-update.js": "/chunks/settings.448ed3b222a05345f252.hot-update.js",
|
||||
"/chunks/settings-password.aaa5822dafcfc16c2193.hot-update.js": "/chunks/settings-password.aaa5822dafcfc16c2193.hot-update.js",
|
||||
"/chunks/settings-password.7d0808fbd0d801dbaac5.hot-update.js": "/chunks/settings-password.7d0808fbd0d801dbaac5.hot-update.js",
|
||||
"/chunks/settings-password.08923cd3b445a335eb1e.hot-update.js": "/chunks/settings-password.08923cd3b445a335eb1e.hot-update.js",
|
||||
"/chunks/settings-password.322a8974a9607f8b6cd5.hot-update.js": "/chunks/settings-password.322a8974a9607f8b6cd5.hot-update.js",
|
||||
"/chunks/settings-password.9112fd25878967288ceb.hot-update.js": "/chunks/settings-password.9112fd25878967288ceb.hot-update.js",
|
||||
"/chunks/settings-password.34d9ed61b284dd5bcae6.hot-update.js": "/chunks/settings-password.34d9ed61b284dd5bcae6.hot-update.js",
|
||||
"/chunks/settings-password.d8e59095a18c55e1aa1f.hot-update.js": "/chunks/settings-password.d8e59095a18c55e1aa1f.hot-update.js",
|
||||
"/chunks/settings-password.30ad5408a6b19e2c9637.hot-update.js": "/chunks/settings-password.30ad5408a6b19e2c9637.hot-update.js",
|
||||
"/chunks/settings-password.47bdbc7da8db9d689436.hot-update.js": "/chunks/settings-password.47bdbc7da8db9d689436.hot-update.js",
|
||||
"/chunks/settings-password.14f33bac2bb835482067.hot-update.js": "/chunks/settings-password.14f33bac2bb835482067.hot-update.js",
|
||||
"/chunks/settings-password.47a524767e992ca1c0dd.hot-update.js": "/chunks/settings-password.47a524767e992ca1c0dd.hot-update.js",
|
||||
"/chunks/settings-password.674bbdc4f858d50fc6f4.hot-update.js": "/chunks/settings-password.674bbdc4f858d50fc6f4.hot-update.js",
|
||||
"/chunks/settings-password.cdfa06ffac05acfb3cc2.hot-update.js": "/chunks/settings-password.cdfa06ffac05acfb3cc2.hot-update.js",
|
||||
"/chunks/settings-password.0295cfaaef557e28bdca.hot-update.js": "/chunks/settings-password.0295cfaaef557e28bdca.hot-update.js",
|
||||
"/chunks/settings-password.cc03a066786e0b53a6c0.hot-update.js": "/chunks/settings-password.cc03a066786e0b53a6c0.hot-update.js",
|
||||
"/chunks/settings-password.752515c929bbbf42577f.hot-update.js": "/chunks/settings-password.752515c929bbbf42577f.hot-update.js",
|
||||
"/chunks/settings-password.23824d17e62bde7ac9aa.hot-update.js": "/chunks/settings-password.23824d17e62bde7ac9aa.hot-update.js",
|
||||
"/chunks/settings-password.1b99ad28246fb47c9204.hot-update.js": "/chunks/settings-password.1b99ad28246fb47c9204.hot-update.js",
|
||||
"/chunks/settings-password.6b1e388d9065e7ea44dc.hot-update.js": "/chunks/settings-password.6b1e388d9065e7ea44dc.hot-update.js",
|
||||
"/chunks/settings-password.dd9e433b6792fa9de4db.hot-update.js": "/chunks/settings-password.dd9e433b6792fa9de4db.hot-update.js",
|
||||
"/chunks/settings-password.61fcc87d12a50b8325be.hot-update.js": "/chunks/settings-password.61fcc87d12a50b8325be.hot-update.js",
|
||||
"/chunks/settings-password.d3be9dec67fb73443651.hot-update.js": "/chunks/settings-password.d3be9dec67fb73443651.hot-update.js",
|
||||
"/chunks/settings-password.cb1c37719a80498b6aad.hot-update.js": "/chunks/settings-password.cb1c37719a80498b6aad.hot-update.js",
|
||||
"/chunks/settings-password.fc02301ec54dd66d7ce1.hot-update.js": "/chunks/settings-password.fc02301ec54dd66d7ce1.hot-update.js",
|
||||
"/chunks/settings-password.f83088dc8ee65c75b298.hot-update.js": "/chunks/settings-password.f83088dc8ee65c75b298.hot-update.js",
|
||||
"/chunks/settings-password.4b40bc87b3e8f44b4b4a.hot-update.js": "/chunks/settings-password.4b40bc87b3e8f44b4b4a.hot-update.js",
|
||||
"/chunks/settings-password.b474d7f3bad87cf6abe3.hot-update.js": "/chunks/settings-password.b474d7f3bad87cf6abe3.hot-update.js",
|
||||
"/chunks/settings-password.ea1558ac42f167fe54fe.hot-update.js": "/chunks/settings-password.ea1558ac42f167fe54fe.hot-update.js",
|
||||
"/chunks/settings-password.8d66818bc28e2d0c23a6.hot-update.js": "/chunks/settings-password.8d66818bc28e2d0c23a6.hot-update.js",
|
||||
"/chunks/settings-password.61dc33b01200227110a2.hot-update.js": "/chunks/settings-password.61dc33b01200227110a2.hot-update.js",
|
||||
"/chunks/settings-password.76c862e5cd95028f6091.hot-update.js": "/chunks/settings-password.76c862e5cd95028f6091.hot-update.js",
|
||||
"/chunks/settings-password.fd0319a6c79fa036c588.hot-update.js": "/chunks/settings-password.fd0319a6c79fa036c588.hot-update.js",
|
||||
"/chunks/settings-password.2609f126cc0561ae3277.hot-update.js": "/chunks/settings-password.2609f126cc0561ae3277.hot-update.js",
|
||||
"/chunks/settings-password.2290a3d30db095c98d71.hot-update.js": "/chunks/settings-password.2290a3d30db095c98d71.hot-update.js",
|
||||
"/chunks/settings-password.8dc6b68bc8d4f5400043.hot-update.js": "/chunks/settings-password.8dc6b68bc8d4f5400043.hot-update.js",
|
||||
"/chunks/settings-password.d19c5d7aa3fd032ce811.hot-update.js": "/chunks/settings-password.d19c5d7aa3fd032ce811.hot-update.js",
|
||||
"/chunks/settings-password.f7e34a1c827bf73fa171.hot-update.js": "/chunks/settings-password.f7e34a1c827bf73fa171.hot-update.js",
|
||||
"/chunks/settings-password.b38881f1af46aee69fb3.hot-update.js": "/chunks/settings-password.b38881f1af46aee69fb3.hot-update.js",
|
||||
"/chunks/settings-password.cb2d68ad49cc174c7ee4.hot-update.js": "/chunks/settings-password.cb2d68ad49cc174c7ee4.hot-update.js",
|
||||
"/chunks/settings-password.e1473bd92f7c02a464d4.hot-update.js": "/chunks/settings-password.e1473bd92f7c02a464d4.hot-update.js",
|
||||
"/chunks/settings-password.d443cc722cd9aa266d41.hot-update.js": "/chunks/settings-password.d443cc722cd9aa266d41.hot-update.js",
|
||||
"/chunks/settings-password.884defd4f87582a28df9.hot-update.js": "/chunks/settings-password.884defd4f87582a28df9.hot-update.js",
|
||||
"/chunks/settings-password.273e1568cf727eb64d1a.hot-update.js": "/chunks/settings-password.273e1568cf727eb64d1a.hot-update.js",
|
||||
"/chunks/settings-password.f8f778137f85bfdf190f.hot-update.js": "/chunks/settings-password.f8f778137f85bfdf190f.hot-update.js",
|
||||
"/chunks/settings-password.843b5231bf2259e85402.hot-update.js": "/chunks/settings-password.843b5231bf2259e85402.hot-update.js",
|
||||
"/chunks/settings-password.08549758bc4f7c4edbc5.hot-update.js": "/chunks/settings-password.08549758bc4f7c4edbc5.hot-update.js",
|
||||
"/chunks/settings-password.817b892e6b5dc1687435.hot-update.js": "/chunks/settings-password.817b892e6b5dc1687435.hot-update.js",
|
||||
"/chunks/settings-password.78d32678d73ca3685e47.hot-update.js": "/chunks/settings-password.78d32678d73ca3685e47.hot-update.js",
|
||||
"/chunks/settings-password.380f84f27c11a5639e42.hot-update.js": "/chunks/settings-password.380f84f27c11a5639e42.hot-update.js",
|
||||
"/chunks/settings.320e5124216ede38ec9b.hot-update.js": "/chunks/settings.320e5124216ede38ec9b.hot-update.js",
|
||||
"/chunks/settings-password.320e5124216ede38ec9b.hot-update.js": "/chunks/settings-password.320e5124216ede38ec9b.hot-update.js",
|
||||
"/chunks/settings-password.f89daa96d6f1f77ec630.hot-update.js": "/chunks/settings-password.f89daa96d6f1f77ec630.hot-update.js",
|
||||
"/chunks/settings-password.63bed1e80b9a8ed36d0d.hot-update.js": "/chunks/settings-password.63bed1e80b9a8ed36d0d.hot-update.js",
|
||||
"/chunks/admin-account.a39e0a440e3e4362df6c.hot-update.js": "/chunks/admin-account.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.a39e0a440e3e4362df6c.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/app-language.a39e0a440e3e4362df6c.hot-update.js": "/chunks/app-language.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/app-setup.a39e0a440e3e4362df6c.hot-update.js": "/chunks/app-setup.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/billings-detail.a39e0a440e3e4362df6c.hot-update.js": "/chunks/billings-detail.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/database.a39e0a440e3e4362df6c.hot-update.js": "/chunks/database.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/environment-setup.a39e0a440e3e4362df6c.hot-update.js": "/chunks/environment-setup.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/installation-disclaimer.a39e0a440e3e4362df6c.hot-update.js": "/chunks/installation-disclaimer.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/page-edit.a39e0a440e3e4362df6c.hot-update.js": "/chunks/page-edit.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/plan-create.a39e0a440e3e4362df6c.hot-update.js": "/chunks/plan-create.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/profile~chunks/settings-password.a39e0a440e3e4362df6c.hot-update.js": "/chunks/profile~chunks/settings-password.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-create-payment-methods.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-create-payment-methods.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-invoices.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-invoices.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-password.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-password.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-payment-methods.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-payment-methods.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-storage.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-storage.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/settings-subscription.a39e0a440e3e4362df6c.hot-update.js": "/chunks/settings-subscription.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/stripe-credentials.a39e0a440e3e4362df6c.hot-update.js": "/chunks/stripe-credentials.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/subscription-plans.a39e0a440e3e4362df6c.hot-update.js": "/chunks/subscription-plans.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/upgrade-billing.a39e0a440e3e4362df6c.hot-update.js": "/chunks/upgrade-billing.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/user-create.a39e0a440e3e4362df6c.hot-update.js": "/chunks/user-create.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/user-subscription.a39e0a440e3e4362df6c.hot-update.js": "/chunks/user-subscription.a39e0a440e3e4362df6c.hot-update.js",
|
||||
"/chunks/admin-account.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/admin-account.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/app-language.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/app-language.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/app-setup.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/app-setup.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/billings-detail.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/billings-detail.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/database.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/database.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/environment-setup.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/environment-setup.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/installation-disclaimer.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/installation-disclaimer.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/page-edit.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/page-edit.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/plan-create.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/plan-create.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/profile~chunks/settings-password.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/profile~chunks/settings-password.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/settings-create-payment-methods.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/settings-create-payment-methods.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/settings-invoices.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/settings-invoices.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/settings-payment-methods.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/settings-payment-methods.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/settings-storage.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/settings-storage.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/settings-subscription.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/settings-subscription.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/stripe-credentials.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/stripe-credentials.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/subscription-plans.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/subscription-plans.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/upgrade-billing.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/upgrade-billing.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/user-create.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/user-create.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/user-subscription.99ceb225e1eb4f34a5c7.hot-update.js": "/chunks/user-subscription.99ceb225e1eb4f34a5c7.hot-update.js",
|
||||
"/chunks/admin-account.fc65a4899f195d5a6476.hot-update.js": "/chunks/admin-account.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.fc65a4899f195d5a6476.hot-update.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~8cc7d96f.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/app-language.fc65a4899f195d5a6476.hot-update.js": "/chunks/app-language.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/app-setup.fc65a4899f195d5a6476.hot-update.js": "/chunks/app-setup.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/billings-detail.fc65a4899f195d5a6476.hot-update.js": "/chunks/billings-detail.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/database.fc65a4899f195d5a6476.hot-update.js": "/chunks/database.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/environment-setup.fc65a4899f195d5a6476.hot-update.js": "/chunks/environment-setup.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/installation-disclaimer.fc65a4899f195d5a6476.hot-update.js": "/chunks/installation-disclaimer.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/page-edit.fc65a4899f195d5a6476.hot-update.js": "/chunks/page-edit.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/plan-create.fc65a4899f195d5a6476.hot-update.js": "/chunks/plan-create.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/profile~chunks/settings-password.fc65a4899f195d5a6476.hot-update.js": "/chunks/profile~chunks/settings-password.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-create-payment-methods.fc65a4899f195d5a6476.hot-update.js": "/chunks/settings-create-payment-methods.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-invoices.fc65a4899f195d5a6476.hot-update.js": "/chunks/settings-invoices.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-payment-methods.fc65a4899f195d5a6476.hot-update.js": "/chunks/settings-payment-methods.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-storage.fc65a4899f195d5a6476.hot-update.js": "/chunks/settings-storage.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-subscription.fc65a4899f195d5a6476.hot-update.js": "/chunks/settings-subscription.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/stripe-credentials.fc65a4899f195d5a6476.hot-update.js": "/chunks/stripe-credentials.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/subscription-plans.fc65a4899f195d5a6476.hot-update.js": "/chunks/subscription-plans.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/upgrade-billing.fc65a4899f195d5a6476.hot-update.js": "/chunks/upgrade-billing.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/user-create.fc65a4899f195d5a6476.hot-update.js": "/chunks/user-create.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/user-subscription.fc65a4899f195d5a6476.hot-update.js": "/chunks/user-subscription.fc65a4899f195d5a6476.hot-update.js",
|
||||
"/chunks/settings-password.9a95c4220c8d727f4ea2.hot-update.js": "/chunks/settings-password.9a95c4220c8d727f4ea2.hot-update.js",
|
||||
"/chunks/settings-password.ecd3c3671fb1bd667cfa.hot-update.js": "/chunks/settings-password.ecd3c3671fb1bd667cfa.hot-update.js",
|
||||
"/js/main.92f70ca3f9447c4cf64b.hot-update.js": "/js/main.92f70ca3f9447c4cf64b.hot-update.js",
|
||||
"/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~3a8cc00e.js": "/chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chunks/app-others~chunks~3a8cc00e.js?id=fce563ddaedb2295ed12",
|
||||
"/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~f0c9b406.js": "/chunks/app-language~chunks/app-settings~chunks/dashboard~chunks/invoices~chunks/page-edit~chunks/pag~f0c9b406.js?id=daeca0a30a4b88a7b521",
|
||||
"/chunks/settings-password.92f70ca3f9447c4cf64b.hot-update.js": "/chunks/settings-password.92f70ca3f9447c4cf64b.hot-update.js",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~89a341fe.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~89a341fe.js?id=83c32f5c8626f80c2da6",
|
||||
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~db2ca71e.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~db2ca71e.js?id=017a08b8a2f6f97357ce",
|
||||
"/js/main.15ec5b640945d7157ef3.hot-update.js": "/js/main.15ec5b640945d7157ef3.hot-update.js",
|
||||
"/chunks/profile.15ec5b640945d7157ef3.hot-update.js": "/chunks/profile.15ec5b640945d7157ef3.hot-update.js",
|
||||
"/chunks/settings.15ec5b640945d7157ef3.hot-update.js": "/chunks/settings.15ec5b640945d7157ef3.hot-update.js",
|
||||
"/chunks/settings-password.15ec5b640945d7157ef3.hot-update.js": "/chunks/settings-password.15ec5b640945d7157ef3.hot-update.js",
|
||||
"/chunks/settings-password.1d7cc7a540c6d655a133.hot-update.js": "/chunks/settings-password.1d7cc7a540c6d655a133.hot-update.js",
|
||||
"/chunks/settings-password.e03839eac067411178ae.hot-update.js": "/chunks/settings-password.e03839eac067411178ae.hot-update.js",
|
||||
"/chunks/settings-password.6e95478644c48b3da9e5.hot-update.js": "/chunks/settings-password.6e95478644c48b3da9e5.hot-update.js",
|
||||
"/chunks/settings-password.af17a491cc6a9e9770ca.hot-update.js": "/chunks/settings-password.af17a491cc6a9e9770ca.hot-update.js",
|
||||
"/chunks/settings-password.c7e99b4673137700ff7d.hot-update.js": "/chunks/settings-password.c7e99b4673137700ff7d.hot-update.js",
|
||||
"/chunks/settings-password.a1ad87b73322e03760e1.hot-update.js": "/chunks/settings-password.a1ad87b73322e03760e1.hot-update.js",
|
||||
"/chunks/settings-password.b0506a2ed51f1ae20fe9.hot-update.js": "/chunks/settings-password.b0506a2ed51f1ae20fe9.hot-update.js",
|
||||
"/chunks/settings-password.0188e6bd0c54da3e5622.hot-update.js": "/chunks/settings-password.0188e6bd0c54da3e5622.hot-update.js",
|
||||
"/chunks/settings.785b8b09d065036f22c3.hot-update.js": "/chunks/settings.785b8b09d065036f22c3.hot-update.js",
|
||||
"/chunks/settings.cd58b80e4d16e8317220.hot-update.js": "/chunks/settings.cd58b80e4d16e8317220.hot-update.js",
|
||||
"/chunks/settings-password.cd58b80e4d16e8317220.hot-update.js": "/chunks/settings-password.cd58b80e4d16e8317220.hot-update.js",
|
||||
"/chunks/upgrade-billing.57be1b9a66de806ff391.hot-update.js": "/chunks/upgrade-billing.57be1b9a66de806ff391.hot-update.js",
|
||||
"/chunks/upgrade-billing.8805b4393b5aceb393ab.hot-update.js": "/chunks/upgrade-billing.8805b4393b5aceb393ab.hot-update.js"
|
||||
}
|
||||
|
||||
@@ -212,10 +212,10 @@
|
||||
</div>
|
||||
<div class="row" v-if="taxRates">
|
||||
<div class="cell">
|
||||
<b>{{ $t('page_upgrade_account.summary.vat') }} - ({{ taxRates.country }} {{ taxRates.percentage }}%)</b>
|
||||
<b>{{ $t('page_upgrade_account.summary.vat') }} - ({{ userTaxRates.country }} {{ userTaxRates.percentage }}%)</b>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ taxRates.plan_price_formatted }}</b>
|
||||
<b>{{ userTaxRates.plan_price_formatted }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -235,7 +235,7 @@
|
||||
<b>{{ $t('page_upgrade_account.summary.total_with_vat') }}</b>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ taxRates.plan_price_formatted }}</b>
|
||||
<b>{{ userTaxRates.plan_price_formatted }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
<?php
|
||||
|
||||
use App\Users\Actions\CreateNewUserAction;
|
||||
use Domain\Browsing\Controllers\BrowseFolderContentController;
|
||||
use Domain\Browsing\Controllers\BrowseLatestFilesController;
|
||||
use Domain\Browsing\Controllers\BrowseParticipantsUploadsController;
|
||||
use Domain\Browsing\Controllers\BrowseSharedItemsController;
|
||||
use Domain\Browsing\Controllers\BrowseTrashContentController;
|
||||
use Domain\Browsing\Controllers\SearchFilesAndFoldersController;
|
||||
use Domain\Folders\Controllers\NavigationFolderTreeController;
|
||||
use Domain\Trash\Controllers\TrashController;
|
||||
use Domain\Sharing\Controllers\ShareController;
|
||||
use Domain\Browsing\Controllers\BrowseController;
|
||||
@@ -29,13 +36,13 @@ Route::post('/register', CreateNewUserAction::class);
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
// Browse
|
||||
Route::group(['prefix' => 'browse'], function () {
|
||||
Route::get('/participants', [BrowseController::class, 'participant_uploads']);
|
||||
Route::get('/navigation', [BrowseController::class, 'navigation_tree']);
|
||||
Route::get('/folders/{id}', [BrowseController::class, 'folder']);
|
||||
Route::get('/share', [BrowseController::class, 'shared']);
|
||||
Route::get('/latest', [BrowseController::class, 'latest']);
|
||||
Route::get('/search', [BrowseController::class, 'search']);
|
||||
Route::get('/trash', [BrowseController::class, 'trash']);
|
||||
Route::get('/participants', BrowseParticipantsUploadsController::class);
|
||||
Route::get('/navigation', NavigationFolderTreeController::class);
|
||||
Route::get('/folders/{id}', BrowseFolderContentController::class);
|
||||
Route::get('/share', BrowseSharedItemsController::class);
|
||||
Route::get('/latest', BrowseLatestFilesController::class);
|
||||
Route::get('/search', SearchFilesAndFoldersController::class);
|
||||
Route::get('/trash', BrowseTrashContentController::class);
|
||||
});
|
||||
|
||||
// Trash
|
||||
|
||||
@@ -56,21 +56,18 @@ class RouteServiceProvider extends ServiceProvider
|
||||
protected function mapWebRoutes()
|
||||
{
|
||||
Route::middleware('web')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/web.php'));
|
||||
}
|
||||
|
||||
protected function mapMaintenanceRoutes()
|
||||
{
|
||||
Route::middleware('web')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/maintenance.php'));
|
||||
}
|
||||
|
||||
protected function mapFileRoutes()
|
||||
{
|
||||
Route::middleware('web')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/file.php'));
|
||||
}
|
||||
|
||||
@@ -85,7 +82,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/api.php'));
|
||||
}
|
||||
|
||||
@@ -93,7 +89,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
Route::prefix('api')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/share.php'));
|
||||
}
|
||||
|
||||
@@ -101,7 +96,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
Route::prefix('api/admin')
|
||||
->middleware(['api', 'auth:sanctum'])
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/admin.php'));
|
||||
}
|
||||
|
||||
@@ -109,7 +103,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
Route::prefix('api/user')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/user.php'));
|
||||
}
|
||||
|
||||
@@ -117,7 +110,6 @@ class RouteServiceProvider extends ServiceProvider
|
||||
{
|
||||
Route::prefix('api/setup')
|
||||
->middleware('api')
|
||||
->namespace($this->namespace)
|
||||
->group(base_path('routes/setup.php'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,22 +7,27 @@ use Domain\Files\Models\File;
|
||||
use Laravel\Cashier\Billable;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Laravel\Sanctum\HasApiTokens;
|
||||
use Domain\Traffic\Models\Traffic;
|
||||
use Illuminate\Support\Collection;
|
||||
use Database\Factories\UserFactory;
|
||||
use Kyslik\ColumnSortable\Sortable;
|
||||
use Support\Services\HelperService;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use App\Users\Notifications\ResetPassword;
|
||||
use Domain\Subscriptions\Traits\Subscription;
|
||||
use Laravel\Fortify\TwoFactorAuthenticatable;
|
||||
use Illuminate\Contracts\Auth\MustVerifyEmail;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
use Domain\Traffic\Models\Traffic as TrafficModel;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
|
||||
|
||||
class User extends Authenticatable implements MustVerifyEmail
|
||||
{
|
||||
use TwoFactorAuthenticatable;
|
||||
use Subscription;
|
||||
use HasApiTokens;
|
||||
use Notifiable;
|
||||
use HasFactory;
|
||||
@@ -35,11 +40,13 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
];
|
||||
|
||||
protected $fillable = [
|
||||
'email', 'password',
|
||||
'email',
|
||||
'password',
|
||||
];
|
||||
|
||||
protected $hidden = [
|
||||
'password', 'remember_token',
|
||||
'password',
|
||||
'remember_token',
|
||||
];
|
||||
|
||||
protected $casts = [
|
||||
@@ -48,7 +55,7 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
];
|
||||
|
||||
protected $appends = [
|
||||
'used_capacity',
|
||||
'usedCapacity',
|
||||
'storage',
|
||||
];
|
||||
|
||||
@@ -69,46 +76,23 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
return UserFactory::new();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get tax rate id for user
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function taxRates()
|
||||
{
|
||||
// Get tax rates
|
||||
$rates = collect(resolve(StripeService::class)->getTaxRates());
|
||||
|
||||
// Find tax rate
|
||||
$user_tax_rate = $rates->first(function ($item) {
|
||||
return $item['country'] === $this->settings->country && $item['active'];
|
||||
});
|
||||
|
||||
return $user_tax_rate ? [$user_tax_rate['id']] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user used storage details
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getStorageAttribute()
|
||||
public function getStorageAttribute(): array
|
||||
{
|
||||
// Get storage limitation setup
|
||||
$storage_limitation = get_setting('storage_limitation');
|
||||
$is_storage_limit = $storage_limitation ? $storage_limitation : 1;
|
||||
$is_storage_limit = get_setting('storage_limitation') ?? 1;
|
||||
|
||||
// Get user storage usage
|
||||
if (! $is_storage_limit) {
|
||||
return [
|
||||
'used' => $this->used_capacity,
|
||||
'used_formatted' => Metric::bytes($this->used_capacity)->format(),
|
||||
'used' => $this->usedCapacity,
|
||||
'used_formatted' => Metric::bytes($this->usedCapacity)->format(),
|
||||
];
|
||||
}
|
||||
|
||||
return [
|
||||
'used' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity),
|
||||
'used_formatted' => get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity) . '%',
|
||||
'used' => (float) get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity),
|
||||
'used_formatted' => get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity) . '%',
|
||||
'capacity' => $this->settings->storage_capacity,
|
||||
'capacity_formatted' => format_gigabytes($this->settings->storage_capacity),
|
||||
];
|
||||
@@ -116,24 +100,19 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
|
||||
/**
|
||||
* Get user used storage capacity in bytes
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function getUsedCapacityAttribute()
|
||||
public function getUsedCapacityAttribute(): int
|
||||
{
|
||||
$user_capacity = $this->files_with_trashed->map(function ($item) {
|
||||
return $this->filesWithTrashed
|
||||
->map(function ($item) {
|
||||
return $item->getRawOriginal();
|
||||
})->sum('filesize');
|
||||
|
||||
return $user_capacity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user full folder tree
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Builder[]|\Illuminate\Database\Eloquent\Collection
|
||||
*/
|
||||
public function getFolderTreeAttribute()
|
||||
public function getFolderTreeAttribute(): Collection
|
||||
{
|
||||
return Folder::with(['folders.shared', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('parent_id', null)
|
||||
@@ -143,48 +122,20 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user billing info
|
||||
*
|
||||
* @param $billing
|
||||
* @return UserSettings
|
||||
* Get user attributes
|
||||
*/
|
||||
public function setBilling($billing)
|
||||
public function settings(): HasOne
|
||||
{
|
||||
$this->settings()->update([
|
||||
'address' => $billing['billing_address'],
|
||||
'city' => $billing['billing_city'],
|
||||
'country' => $billing['billing_country'],
|
||||
'name' => $billing['billing_name'],
|
||||
'phone_number' => $billing['billing_phone_number'],
|
||||
'postal_code' => $billing['billing_postal_code'],
|
||||
'state' => $billing['billing_state'],
|
||||
]);
|
||||
|
||||
return $this->settings;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the password reset notification.
|
||||
*
|
||||
* @param string $token
|
||||
* @return void
|
||||
*/
|
||||
public function sendPasswordResetNotification($token)
|
||||
{
|
||||
$this->notify(new ResetPassword($token));
|
||||
return $this->hasOne(UserSettings::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Record user upload filesize
|
||||
*
|
||||
* @param $file_size
|
||||
*/
|
||||
public function record_upload($file_size)
|
||||
public function recordUpload(int $file_size): void
|
||||
{
|
||||
$now = now();
|
||||
|
||||
$record = Traffic::whereYear('created_at', '=', $now->year)
|
||||
->whereMonth('created_at', '=', $now->month)
|
||||
$record = TrafficModel::whereYear('created_at', '=', now()->year)
|
||||
->whereMonth('created_at', '=', now()->month)
|
||||
->firstOrCreate([
|
||||
'user_id' => $this->id,
|
||||
]);
|
||||
@@ -196,15 +147,11 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
|
||||
/**
|
||||
* Record user download filesize
|
||||
*
|
||||
* @param $file_size
|
||||
*/
|
||||
public function record_download($file_size)
|
||||
public function recordDownload(int $file_size): void
|
||||
{
|
||||
$now = now();
|
||||
|
||||
$record = Traffic::whereYear('created_at', '=', $now->year)
|
||||
->whereMonth('created_at', '=', $now->month)
|
||||
$record = TrafficModel::whereYear('created_at', '=', now()->year)
|
||||
->whereMonth('created_at', '=', now()->month)
|
||||
->firstOrCreate([
|
||||
'user_id' => $this->id,
|
||||
]);
|
||||
@@ -216,58 +163,48 @@ class User extends Authenticatable implements MustVerifyEmail
|
||||
|
||||
/**
|
||||
* Get user favourites folder
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function favouriteFolders()
|
||||
public function favouriteFolders(): BelongsToMany
|
||||
{
|
||||
return $this->belongsToMany(Folder::class, 'favourite_folder', 'user_id', 'folder_id', 'id', 'id')
|
||||
->with('shared:token,id,item_id,permission,is_protected,expire_in');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get 5 latest uploads
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany|\Illuminate\Database\Query\Builder
|
||||
* Get all user files
|
||||
*/
|
||||
public function latest_uploads()
|
||||
public function filesWithTrashed(): HasMany
|
||||
{
|
||||
return $this->hasMany(File::class)->with(['parent:id,name'])->take(40);
|
||||
return $this->hasMany(File::class)
|
||||
->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get 5 latest uploads
|
||||
*/
|
||||
public function latestUploads(): HasMany
|
||||
{
|
||||
return $this->hasMany(File::class)
|
||||
->with(['parent:id,name'])
|
||||
->take(40);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user files
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function files()
|
||||
public function files(): HasMany
|
||||
{
|
||||
return $this->hasMany(File::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user files
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
* Send the password reset notification.
|
||||
*/
|
||||
public function files_with_trashed()
|
||||
public function sendPasswordResetNotification($token): void
|
||||
{
|
||||
return $this->hasMany(File::class)->withTrashed();
|
||||
$this->notify(new ResetPassword($token));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user attributes
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
*/
|
||||
public function settings()
|
||||
{
|
||||
return $this->hasOne(UserSettings::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Model Events
|
||||
*/
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
@@ -56,9 +56,9 @@ class UserStorageResource extends JsonResource
|
||||
'id' => (string) $this->id,
|
||||
'type' => 'storage',
|
||||
'attributes' => [
|
||||
'used' => Metric::bytes($this->used_capacity)->format(),
|
||||
'used' => Metric::bytes($this->usedCapacity)->format(),
|
||||
'capacity' => format_gigabytes($this->settings->storage_capacity),
|
||||
'percentage' => (float) get_storage_fill_percentage($this->used_capacity, $this->settings->storage_capacity),
|
||||
'percentage' => (float) get_storage_fill_percentage($this->usedCapacity, $this->settings->storage_capacity),
|
||||
],
|
||||
'meta' => [
|
||||
'images' => [
|
||||
|
||||
@@ -1,215 +0,0 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Domain\Items\Requests\SearchRequest;
|
||||
|
||||
class BrowseController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get directory with files
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $id
|
||||
* @return Collection
|
||||
*/
|
||||
public function folder(Request $request, $id)
|
||||
{
|
||||
$root_id = $id === 'undefined' ? null : $id;
|
||||
|
||||
// Get folder trash items
|
||||
if ($request->query('trash')) {
|
||||
// Get folders and files
|
||||
$folders = Folder::onlyTrashed()
|
||||
->with('parent')
|
||||
->where('parent_id', $root_id)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::onlyTrashed()
|
||||
->with('parent')
|
||||
->where('folder_id', $root_id)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])->collapse();
|
||||
}
|
||||
|
||||
// Get folders and files
|
||||
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('parent_id', $root_id)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('folder_id', $root_id)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get latest user uploads
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function latest()
|
||||
{
|
||||
$user = User::with(['latest_uploads' => function ($query) {
|
||||
$query->sortable(['created_at' => 'desc']);
|
||||
}])
|
||||
->where('id', Auth::id())
|
||||
->first();
|
||||
|
||||
return $user->latest_uploads;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get trashed files
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function trash()
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
// Get folders and files
|
||||
$folders_trashed = Folder::onlyTrashed()
|
||||
->with(['trashed_folders', 'parent'])
|
||||
->where('user_id', $user_id)
|
||||
->get(['parent_id', 'id', 'name']);
|
||||
|
||||
$folders = Folder::onlyTrashed()
|
||||
->with(['parent'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', filter_folders_ids($folders_trashed))
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Get files trashed
|
||||
$files_trashed = File::onlyTrashed()
|
||||
->with(['parent'])
|
||||
->where('user_id', $user_id)
|
||||
->where(function ($query) use ($folders_trashed) {
|
||||
$query->whereNull('folder_id');
|
||||
$query->orWhereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'id'))));
|
||||
})
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files_trashed])
|
||||
->collapse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user shared items
|
||||
*
|
||||
* @return Collection
|
||||
*/
|
||||
public function shared()
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
// Get shared folders and files
|
||||
$folder_ids = Share::where('user_id', $user_id)
|
||||
->where('type', 'folder')
|
||||
->pluck('item_id');
|
||||
|
||||
$file_ids = Share::where('user_id', $user_id)
|
||||
->where('type', '!=', 'folder')
|
||||
->pluck('item_id');
|
||||
|
||||
// Get folders and files
|
||||
$folders = Folder::with(['parent', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', $folder_ids)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::with(['parent', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', $file_ids)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get participant uploads
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function participant_uploads()
|
||||
{
|
||||
return File::with(['parent'])
|
||||
->where('user_id', Auth::id())
|
||||
->whereAuthor('visitor')
|
||||
->sortable()
|
||||
->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user folder tree
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function navigation_tree()
|
||||
{
|
||||
$folders = Folder::with('folders:id,parent_id,id,name')
|
||||
->where('parent_id', null)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get(['id', 'parent_id', 'id', 'name']);
|
||||
|
||||
return [
|
||||
[
|
||||
'name' => __t('home'),
|
||||
'location' => 'base',
|
||||
'folders' => $folders,
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Search files
|
||||
*
|
||||
* @param SearchRequest $request
|
||||
* @return Collection
|
||||
*/
|
||||
public function search(SearchRequest $request)
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
$query = remove_accents($request->input('query'));
|
||||
|
||||
// Search files id db
|
||||
$searched_files = File::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
$searched_folders = Folder::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$searched_folders, $searched_files])
|
||||
->collapse();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseFolderContentController
|
||||
{
|
||||
public function __invoke(
|
||||
Request $request,
|
||||
string $id,
|
||||
): Collection {
|
||||
$root_id = $id === 'undefined' ? null : $id;
|
||||
|
||||
// Get folder trash items
|
||||
if ($request->query('trash')) {
|
||||
// Get folders and files
|
||||
$folders = Folder::onlyTrashed()
|
||||
->with('parent')
|
||||
->where('parent_id', $root_id)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::onlyTrashed()
|
||||
->with('parent')
|
||||
->where('folder_id', $root_id)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])->collapse();
|
||||
}
|
||||
|
||||
// Get folders and files
|
||||
$folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('parent_id', $root_id)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('folder_id', $root_id)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseLatestFilesController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
{
|
||||
$user = User::with([
|
||||
'latestUploads' => fn ($query) => $query->sortable(['created_at' => 'desc'])
|
||||
])
|
||||
->where('id', Auth::id())
|
||||
->first();
|
||||
|
||||
return $user->latestUploads;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseParticipantsUploadsController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
{
|
||||
return File::with(['parent'])
|
||||
->where('user_id', Auth::id())
|
||||
->whereAuthor('visitor')
|
||||
->sortable()
|
||||
->get();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseSharedItemsController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
// Get shared folders and files
|
||||
$folder_ids = Share::where('user_id', $user_id)
|
||||
->where('type', 'folder')
|
||||
->pluck('item_id');
|
||||
|
||||
$file_ids = Share::where('user_id', $user_id)
|
||||
->where('type', '!=', 'folder')
|
||||
->pluck('item_id');
|
||||
|
||||
// Get folders and files
|
||||
$folders = Folder::with(['parent', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', $folder_ids)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
$files = File::with(['parent', 'shared:token,id,item_id,permission,is_protected,expire_in'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', $file_ids)
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])
|
||||
->collapse();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class BrowseTrashContentController
|
||||
{
|
||||
public function __invoke(): Collection
|
||||
{
|
||||
$user_id = Auth::id();
|
||||
|
||||
// Get folders and files
|
||||
$folders_trashed = Folder::onlyTrashed()
|
||||
->with(['trashedFolders', 'parent'])
|
||||
->where('user_id', $user_id)
|
||||
->get(['parent_id', 'id', 'name']);
|
||||
|
||||
$folders = Folder::onlyTrashed()
|
||||
->with(['parent'])
|
||||
->where('user_id', $user_id)
|
||||
->whereIn('id', filter_folders_ids($folders_trashed))
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Get files trashed
|
||||
$files_trashed = File::onlyTrashed()
|
||||
->with(['parent'])
|
||||
->where('user_id', $user_id)
|
||||
->where(function ($query) use ($folders_trashed) {
|
||||
$query->whereNull('folder_id');
|
||||
$query->orWhereNotIn('folder_id', array_values(array_unique(recursiveFind($folders_trashed->toArray(), 'id'))));
|
||||
})
|
||||
->sortable()
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files_trashed])
|
||||
->collapse();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
namespace Domain\Browsing\Controllers;
|
||||
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Domain\Items\Requests\SearchRequest;
|
||||
|
||||
class SearchFilesAndFoldersController
|
||||
{
|
||||
public function __invoke(
|
||||
SearchRequest $request
|
||||
): Collection {
|
||||
$user_id = Auth::id();
|
||||
|
||||
$query = remove_accents(
|
||||
$request->input('query')
|
||||
);
|
||||
|
||||
// Search files id db
|
||||
$searched_files = File::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
$searched_folders = Folder::search($query)
|
||||
->where('user_id', $user_id)
|
||||
->get();
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$searched_folders, $searched_files])
|
||||
->collapse();
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,7 @@ class FileAccessController extends Controller
|
||||
}*/
|
||||
|
||||
// Store user download size
|
||||
$request->user()->record_download(
|
||||
$request->user()->recordDownload(
|
||||
(int) $file->getRawOriginal('filesize')
|
||||
);
|
||||
|
||||
@@ -102,7 +102,7 @@ class FileAccessController extends Controller
|
||||
|
||||
$zip
|
||||
->user
|
||||
->record_download(
|
||||
->recordDownload(
|
||||
$disk->size("zip/$zip->basename")
|
||||
);
|
||||
|
||||
|
||||
@@ -12,6 +12,8 @@ use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use TeamTNT\TNTSearch\Indexer\TNTIndexer;
|
||||
use \Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
/**
|
||||
@@ -20,9 +22,12 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
*/
|
||||
class File extends Model
|
||||
{
|
||||
use Searchable, SoftDeletes, Sortable, HasFactory;
|
||||
use Searchable;
|
||||
use SoftDeletes;
|
||||
use Sortable;
|
||||
use HasFactory;
|
||||
|
||||
public $public_access = null;
|
||||
public ?string $public_access = null;
|
||||
|
||||
protected $guarded = [
|
||||
'id',
|
||||
@@ -40,11 +45,6 @@ class File extends Model
|
||||
'author_id',
|
||||
];
|
||||
|
||||
/**
|
||||
* Sortable columns
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
public $sortable = [
|
||||
'name',
|
||||
'created_at',
|
||||
@@ -61,54 +61,50 @@ class File extends Model
|
||||
|
||||
/**
|
||||
* Set routes with public access
|
||||
*
|
||||
* @param $token
|
||||
*/
|
||||
public function setPublicUrl($token)
|
||||
public function setPublicUrl(string $token)
|
||||
{
|
||||
$this->public_access = $token;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format created at date
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getCreatedAtAttribute()
|
||||
public function getCreatedAtAttribute(): string
|
||||
{
|
||||
return format_date(set_time_by_user_timezone($this->attributes['created_at']), __t('time'));
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['created_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Form\a\t created at date reformat
|
||||
*
|
||||
* @return string|null
|
||||
* Format deleted at date reformat
|
||||
*/
|
||||
public function getDeletedAtAttribute()
|
||||
public function getDeletedAtAttribute(): string | null
|
||||
{
|
||||
if (! $this->attributes['deleted_at']) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return format_date(set_time_by_user_timezone($this->attributes['deleted_at']), __t('time'));
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['deleted_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format fileSize
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFilesizeAttribute()
|
||||
public function getFilesizeAttribute(): string
|
||||
{
|
||||
return Metric::bytes($this->attributes['filesize'])->format();
|
||||
}
|
||||
|
||||
/**
|
||||
* Format thumbnail url
|
||||
*
|
||||
* @return string|null
|
||||
*/
|
||||
public function getThumbnailAttribute()
|
||||
public function getThumbnailAttribute(): string | null
|
||||
{
|
||||
// Get thumbnail from external storage
|
||||
if ($this->attributes['thumbnail'] && ! is_storage_driver(['local'])) {
|
||||
@@ -132,10 +128,8 @@ class File extends Model
|
||||
|
||||
/**
|
||||
* Format file url
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getFileUrlAttribute()
|
||||
public function getFileUrlAttribute(): string
|
||||
{
|
||||
// Get file from external storage
|
||||
if (! is_storage_driver(['local'])) {
|
||||
@@ -166,10 +160,8 @@ class File extends Model
|
||||
|
||||
/**
|
||||
* Index file
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toSearchableArray()
|
||||
public function toSearchableArray(): array
|
||||
{
|
||||
$array = $this->toArray();
|
||||
$name = Str::slug($array['name'], ' ');
|
||||
@@ -181,33 +173,21 @@ class File extends Model
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function parent()
|
||||
public function parent(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Folder::class, 'folder_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
*/
|
||||
public function folder()
|
||||
public function folder(): HasOne
|
||||
{
|
||||
return $this->hasOne(Folder::class, 'id', 'folder_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
*/
|
||||
public function shared()
|
||||
public function shared(): HasOne
|
||||
{
|
||||
return $this->hasOne(Share::class, 'item_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Model events
|
||||
*/
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
namespace Domain\Folders\Controllers;
|
||||
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class NavigationFolderTreeController
|
||||
{
|
||||
public function __invoke(): array
|
||||
{
|
||||
$folders = Folder::with('folders:id,parent_id,id,name')
|
||||
->where('parent_id', null)
|
||||
->where('user_id', Auth::id())
|
||||
->sortable()
|
||||
->get(['id', 'parent_id', 'id', 'name']);
|
||||
|
||||
return [
|
||||
[
|
||||
'name' => __t('home'),
|
||||
'location' => 'base',
|
||||
'folders' => $folders,
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,9 @@ use Database\Factories\FolderFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use TeamTNT\TNTSearch\Indexer\TNTIndexer;
|
||||
use \Illuminate\Database\Eloquent\SoftDeletes;
|
||||
use Illuminate\Database\Eloquent\Relations\HasOne;
|
||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
/**
|
||||
@@ -37,11 +40,6 @@ class Folder extends Model
|
||||
'author_id',
|
||||
];
|
||||
|
||||
/**
|
||||
* Sortable columns
|
||||
*
|
||||
* @var string[]
|
||||
*/
|
||||
public $sortable = [
|
||||
'name',
|
||||
'created_at',
|
||||
@@ -56,17 +54,15 @@ class Folder extends Model
|
||||
return FolderFactory::new();
|
||||
}
|
||||
|
||||
public function getTypeAttribute()
|
||||
public function getTypeAttribute(): string
|
||||
{
|
||||
return 'folder';
|
||||
}
|
||||
|
||||
/**
|
||||
* Index folder
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toSearchableArray()
|
||||
public function toSearchableArray(): array
|
||||
{
|
||||
$array = $this->toArray();
|
||||
$name = Str::slug($array['name'], ' ');
|
||||
@@ -80,135 +76,130 @@ class Folder extends Model
|
||||
|
||||
/**
|
||||
* Counts how many folder have items
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getItemsAttribute()
|
||||
public function getItemsAttribute(): int
|
||||
{
|
||||
$folders = $this->folders()->count();
|
||||
$files = $this->files()->count();
|
||||
$folders = $this->folders()
|
||||
->count();
|
||||
|
||||
$files = $this->files()
|
||||
->count();
|
||||
|
||||
return $folders + $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Counts how many folder have items
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function getTrashedItemsAttribute()
|
||||
public function getTrashedItemsAttribute(): int
|
||||
{
|
||||
$folders = $this->trashed_folders()->count();
|
||||
$files = $this->trashed_files()->count();
|
||||
$folders = $this->trashedFolders()
|
||||
->count();
|
||||
|
||||
$files = $this->trashedFiles()
|
||||
->count();
|
||||
|
||||
return $folders + $files;
|
||||
}
|
||||
|
||||
/**
|
||||
* Format created at date reformat
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getCreatedAtAttribute()
|
||||
public function getCreatedAtAttribute(): string
|
||||
{
|
||||
return format_date(set_time_by_user_timezone($this->attributes['created_at']), __t('time'));
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['created_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Format created at date reformat
|
||||
*
|
||||
* @return string|null
|
||||
* Format deleted at date reformat
|
||||
*/
|
||||
public function getDeletedAtAttribute()
|
||||
public function getDeletedAtAttribute(): string | null
|
||||
{
|
||||
if (! $this->attributes['deleted_at']) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return format_date(set_time_by_user_timezone($this->attributes['deleted_at']), __t('time'));
|
||||
return format_date(
|
||||
set_time_by_user_timezone($this->attributes['deleted_at']),
|
||||
__t('time')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get parent
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
|
||||
*/
|
||||
public function parent()
|
||||
public function parent(): BelongsTo
|
||||
{
|
||||
return $this->belongsTo(Folder::class, 'parent_id', 'id');
|
||||
}
|
||||
|
||||
public function folderIds()
|
||||
{
|
||||
return $this->children()->with('folderIds')->select(['id', 'parent_id']);
|
||||
return $this->children()
|
||||
->with('folderIds')
|
||||
->select(['id', 'parent_id']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all files
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function files()
|
||||
public function files(): HasMany
|
||||
{
|
||||
return $this->hasMany(File::class, 'folder_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all trashed files
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function trashed_files()
|
||||
public function trashedFiles(): HasMany
|
||||
{
|
||||
return $this->hasMany(File::class, 'folder_id', 'id')->withTrashed();
|
||||
return $this->hasMany(File::class, 'folder_id', 'id')
|
||||
->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all folders
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function folders()
|
||||
public function folders(): HasMany
|
||||
{
|
||||
return $this->children()->with('folders');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all trashed folders
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function trashed_folders()
|
||||
public function trashedFolders(): HasMany
|
||||
{
|
||||
return $this->children()->with('trashed_folders')->withTrashed()->select(['parent_id', 'id', 'name']);
|
||||
return $this->children()
|
||||
->with('trashedFolders')
|
||||
->withTrashed()
|
||||
->select(['parent_id', 'id', 'name']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get childrens
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
* Get children
|
||||
*/
|
||||
public function children()
|
||||
public function children(): HasMany
|
||||
{
|
||||
return $this->hasMany(Folder::class, 'parent_id', 'id');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get trashed childrens
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
* Get trashed children
|
||||
*/
|
||||
public function trashed_children()
|
||||
public function trashedChildren(): HasMany
|
||||
{
|
||||
return $this->hasMany(Folder::class, 'parent_id', 'id')->withTrashed();
|
||||
return $this->hasMany(Folder::class, 'parent_id', 'id')
|
||||
->withTrashed();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get sharing attributes
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasOne
|
||||
*/
|
||||
public function shared()
|
||||
public function shared(): HasOne
|
||||
{
|
||||
return $this->hasOne(Share::class, 'item_id', 'id');
|
||||
}
|
||||
@@ -224,7 +215,7 @@ class Folder extends Model
|
||||
|
||||
static::deleting(function ($item) {
|
||||
if ($item->isForceDeleting()) {
|
||||
$item->trashed_children()->each(function ($folder) {
|
||||
$item->trashedChildren()->each(function ($folder) {
|
||||
$folder->forceDelete();
|
||||
});
|
||||
} else {
|
||||
@@ -240,12 +231,12 @@ class Folder extends Model
|
||||
|
||||
static::restoring(function ($item) {
|
||||
// Restore children folders
|
||||
$item->trashed_children()->each(function ($folder) {
|
||||
$item->trashedChildren()->each(function ($folder) {
|
||||
$folder->restore();
|
||||
});
|
||||
|
||||
// Restore children files
|
||||
$item->trashed_files()->each(function ($files) {
|
||||
$item->trashedFiles()->each(function ($files) {
|
||||
$files->restore();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -45,7 +45,7 @@ class BrowseShareController extends Controller
|
||||
// Store user download size
|
||||
$shared
|
||||
->user
|
||||
->record_download(
|
||||
->recordDownload(
|
||||
(int) $image->getRawOriginal('filesize')
|
||||
);
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class FileSharedAccessController extends Controller
|
||||
|
||||
$zip
|
||||
->user
|
||||
->record_download(
|
||||
->recordDownload(
|
||||
$disk->size("zip/$zip->basename")
|
||||
);
|
||||
|
||||
@@ -69,7 +69,7 @@ class FileSharedAccessController extends Controller
|
||||
// Store user download size
|
||||
$shared
|
||||
->user
|
||||
->record_download(
|
||||
->recordDownload(
|
||||
(int) $file->getRawOriginal('filesize')
|
||||
);
|
||||
|
||||
@@ -99,7 +99,7 @@ class FileSharedAccessController extends Controller
|
||||
// Store user download size
|
||||
$shared
|
||||
->user
|
||||
->record_download(
|
||||
->recordDownload(
|
||||
(int) $file->getRawOriginal('filesize')
|
||||
);
|
||||
|
||||
|
||||
44
src/Domain/Subscriptions/Traits/Subscription.php
Normal file
44
src/Domain/Subscriptions/Traits/Subscription.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
namespace Domain\Subscriptions\Traits;
|
||||
|
||||
use App\Users\Models\UserSettings;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
|
||||
trait Subscription
|
||||
{
|
||||
/**
|
||||
* Get tax rate id for user
|
||||
*/
|
||||
public function userTaxRates(): array
|
||||
{
|
||||
// Get tax rates
|
||||
$rates = collect(
|
||||
resolve(StripeService::class)->getTaxRates()
|
||||
);
|
||||
|
||||
// Find tax rate
|
||||
$user_tax_rate = $rates->first(function ($item) {
|
||||
return $item['country'] === $this->settings->country && $item['active'];
|
||||
});
|
||||
|
||||
return $user_tax_rate ? [$user_tax_rate['id']] : [];
|
||||
}
|
||||
|
||||
/**
|
||||
* Set user billing info into user settings table
|
||||
*/
|
||||
public function setBilling($billing): UserSettings
|
||||
{
|
||||
$this->settings()->update([
|
||||
'address' => $billing['billing_address'],
|
||||
'city' => $billing['billing_city'],
|
||||
'country' => $billing['billing_country'],
|
||||
'name' => $billing['billing_name'],
|
||||
'phone_number' => $billing['billing_phone_number'],
|
||||
'postal_code' => $billing['billing_postal_code'],
|
||||
'state' => $billing['billing_state'],
|
||||
]);
|
||||
|
||||
return $this->settings;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,9 @@ use Illuminate\Support\Str;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
|
||||
/**
|
||||
* @method static whereYear(string $string, string $string1, int $year)
|
||||
*/
|
||||
class Traffic extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
@@ -19,9 +22,6 @@ class Traffic extends Model
|
||||
|
||||
protected $keyType = 'string';
|
||||
|
||||
/**
|
||||
* Model events
|
||||
*/
|
||||
protected static function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
@@ -236,7 +236,7 @@ class FileManagerService
|
||||
// Force delete children files
|
||||
if ($item['force_delete']) {
|
||||
// Get children folder ids
|
||||
$child_folders = filter_folders_ids($folder->trashed_folders, 'id');
|
||||
$child_folders = filter_folders_ids($folder->trashedFolders, 'id');
|
||||
|
||||
// Get children files
|
||||
$files = UserFile::onlyTrashed()
|
||||
@@ -391,7 +391,7 @@ class FileManagerService
|
||||
|
||||
// Store user upload size
|
||||
User::find($user_id)
|
||||
->record_upload($file_size);
|
||||
->recordUpload($file_size);
|
||||
|
||||
// Return new file
|
||||
return UserFile::create([
|
||||
|
||||
@@ -481,10 +481,10 @@ if (! function_exists('user_storage_percentage')) {
|
||||
{
|
||||
$user = User::findOrFail($id);
|
||||
|
||||
$used = $user->used_capacity;
|
||||
$used = $user->usedCapacity;
|
||||
|
||||
if ($additionals) {
|
||||
$used = $user->used_capacity + $additionals;
|
||||
$used = $user->usedCapacity + $additionals;
|
||||
}
|
||||
|
||||
return get_storage_fill_percentage($used, $user->settings->storage_capacity);
|
||||
|
||||
@@ -127,7 +127,7 @@ class FileTest extends TestCase
|
||||
->postJson('/api/upload', [
|
||||
'file' => $file,
|
||||
'folder_id' => null,
|
||||
'is_last' => true,
|
||||
'is_last' => 'true',
|
||||
])->assertStatus(422);
|
||||
|
||||
Storage::disk('local')
|
||||
|
||||
Reference in New Issue
Block a user