diff --git a/config/vuefilemanager.php b/config/vuefilemanager.php index 80b5475a..69553a47 100644 --- a/config/vuefilemanager.php +++ b/config/vuefilemanager.php @@ -12,4 +12,19 @@ return [ 'colors' => [ '#9ad2bf', '#9ad2cd', '#d29a9a', '#d2ce9a', '#9aadd2', '#c59ad2', ], + + 'avatar_sizes' => [ + [ + 'size' => 160, + 'name' => 'md', + ], + [ + 'size' => 60, + 'name' => 'sm', + ], + [ + 'size' => 42, + 'name' => 'xs', + ], + ] ]; diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 679ad80a..76f4f7a6 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -11,7 +11,7 @@ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=bbbd57ba43e4f381946f", "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=510e6c1b1017a73a40a6", "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=90270d0c5aeb5c50dacf", - "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=892ef3945a5b63ccd634", + "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=61e970ffb679245686c3", "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=f005b83de750bfec241f", "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=66048f6dddf596913bbd", "/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=aa284736dda7647d5c9e", @@ -32,7 +32,7 @@ "/chunks/contact-us.js": "/chunks/contact-us.js?id=b7be3b643318f6c29dcc", "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=65ee559ca803555be568", "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=55135fff8801bdf735c4", - "/chunks/dashboard.js": "/chunks/dashboard.js?id=893fabb6cb786b7e071b", + "/chunks/dashboard.js": "/chunks/dashboard.js?id=cf8c40eec87a01f07b6b", "/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=0391ad036c47d999f159", "/chunks/database.js": "/chunks/database.js?id=f6272904ff77ab215903", "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6c86916c6c6f679fa86b", @@ -46,7 +46,7 @@ "/chunks/homepage.js": "/chunks/homepage.js?id=b89dd81804b8a0bd3f0b", "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=6f5255c42bac60a88220", "/chunks/invitation.js": "/chunks/invitation.js?id=c9cd3541ee362ae8d5f7", - "/chunks/invoices.js": "/chunks/invoices.js?id=fe45319300d75d185b81", + "/chunks/invoices.js": "/chunks/invoices.js?id=efcfdd569278c114f51a", "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ea129760157c8e44f324", "/chunks/not-found.js": "/chunks/not-found.js?id=034287ee0ecb036320d3", "/chunks/page-edit.js": "/chunks/page-edit.js?id=87f50fa5a1bd393c49da", @@ -55,7 +55,7 @@ "/chunks/plan-create.js": "/chunks/plan-create.js?id=d939086958e81fafdd65", "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=96f48131997a0092be4b", "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=19c260a6aa85d20c8042", - "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=49030c784af215623608", + "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=99854b8b4518fbebc79f", "/chunks/plans.js": "/chunks/plans.js?id=6fca685daa45f22e4c8f", "/chunks/platform.js": "/chunks/platform.js?id=7e53bcf8da2d3f9ce731", "/chunks/platform~chunks/settings-subscription~chunks/shared~chunks/user-subscription.js": "/chunks/platform~chunks/settings-subscription~chunks/shared~chunks/user-subscription.js?id=8656b69a97cace919251", @@ -64,7 +64,7 @@ "/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=58edfb3a35062e1ba4e0", "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=f8b2619e393a5823bf29", "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=22f629caf127051898e9", - "/chunks/settings.js": "/chunks/settings.js?id=c5be6ba6929a8a260165", + "/chunks/settings.js": "/chunks/settings.js?id=78cc8845537b13463df4", "/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=c8b08d42c6692d171884", "/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=a9a6286b9a416c949003", "/chunks/settings-password.js": "/chunks/settings-password.js?id=5875aa689f3d14a37494", @@ -78,7 +78,7 @@ "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=8b9ac9ed9afd8dd15229", "/chunks/shared/files.js": "/chunks/shared/files.js?id=8ed7578e7f74e385da95", "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=f2fb680ebf4873ff4436", - "/chunks/sign-in.js": "/chunks/sign-in.js?id=8ea75353ce2e8f0ff63e", + "/chunks/sign-in.js": "/chunks/sign-in.js?id=04b378323ff1494fa85d", "/chunks/sign-up.js": "/chunks/sign-up.js?id=0307551ea7ad8e9bd3c2", "/chunks/status-check.js": "/chunks/status-check.js?id=7de8baaff011e2f1bab9", "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=6b94c5fda72871b8d2bd", @@ -89,7 +89,7 @@ "/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=2bffa85e82a5cda1dcd2", "/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=f59d97c1cbf6649b7057", "/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=460e6f80d824b5a93adf", - "/chunks/user.js": "/chunks/user.js?id=4cd68f8304d855e39d6c", + "/chunks/user.js": "/chunks/user.js?id=fe26116ebc97069cf7f9", "/chunks/user-create.js": "/chunks/user-create.js?id=f7ff89074c03e72e3d06", "/chunks/user-delete.js": "/chunks/user-delete.js?id=36e7149e777f1ecd71e9", "/chunks/user-detail.js": "/chunks/user-detail.js?id=6218f429f4040d0524ac", @@ -97,7 +97,7 @@ "/chunks/user-password.js": "/chunks/user-password.js?id=22725c9c88b862276b34", "/chunks/user-storage.js": "/chunks/user-storage.js?id=3be3b8a695ef8b69792a", "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=370b3df08b2ee39bf6ac", - "/chunks/users.js": "/chunks/users.js?id=d16275ff233f8203a705", + "/chunks/users.js": "/chunks/users.js?id=562f40bdfc51d8c5d4dd", "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~24b428d3.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~24b428d3.js?id=ee89932f7ee76e74483e", "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~b505e62a.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~b505e62a.js?id=8163e0eab55c50f8afb8", "/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js": "/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js?id=37ce1e1ab9968c100712", @@ -574,7 +574,7 @@ "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.a14b8f8cb897fb6ae4ab.hot-update.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.a14b8f8cb897fb6ae4ab.hot-update.js", "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.86b4136c22d756f423b4.hot-update.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.86b4136c22d756f423b4.hot-update.js", "/js/main.3e07bae3987249743b99.hot-update.js": "/js/main.3e07bae3987249743b99.hot-update.js", - "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=4acbc8f93ca64c3b896f", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=8b63f1df2980adfabef3", "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.3e07bae3987249743b99.hot-update.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.3e07bae3987249743b99.hot-update.js", "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.3e07bae3987249743b99.hot-update.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.3e07bae3987249743b99.hot-update.js", "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js?id=d8ecc7af25c633e36fc7", @@ -1201,5 +1201,42 @@ "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.429a9317e1068a4ca919.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.429a9317e1068a4ca919.hot-update.js", "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.7cbeb4df64d14d05a742.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.7cbeb4df64d14d05a742.hot-update.js", "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.9322a66e6a4b684d7efa.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.9322a66e6a4b684d7efa.hot-update.js", - "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.40e7fa6c551730545b85.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.40e7fa6c551730545b85.hot-update.js" + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.40e7fa6c551730545b85.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.40e7fa6c551730545b85.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.c004e53916d113657982.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.c004e53916d113657982.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.97c81accb2c71051894a.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.97c81accb2c71051894a.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.c2115bf92c3dc767fb5e.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.c2115bf92c3dc767fb5e.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.c815ed9acb34b14b6cb8.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.c815ed9acb34b14b6cb8.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.27b6b67bcd900662a010.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.27b6b67bcd900662a010.hot-update.js", + "/chunks/settings.5d3079acdf7023371fe5.hot-update.js": "/chunks/settings.5d3079acdf7023371fe5.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.e7ac6844f4d00d4bb9aa.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.e7ac6844f4d00d4bb9aa.hot-update.js", + "/chunks/admin~chunks/platform~chunks/settings.9172f20079efc5fb96a9.hot-update.js": "/chunks/admin~chunks/platform~chunks/settings.9172f20079efc5fb96a9.hot-update.js", + "/js/main.e5bc9b9e0036dfe816b7.hot-update.js": "/js/main.e5bc9b9e0036dfe816b7.hot-update.js", + "/chunks/user.98483a14a32a1cd3f377.hot-update.js": "/chunks/user.98483a14a32a1cd3f377.hot-update.js", + "/chunks/settings.81dac7b0d287fea465ec.hot-update.js": "/chunks/settings.81dac7b0d287fea465ec.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.399dd5e2fe325a039db4.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.399dd5e2fe325a039db4.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.75551917db852b68e5f5.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.75551917db852b68e5f5.hot-update.js", + "/chunks/dashboard.414e45f0d379f497150e.hot-update.js": "/chunks/dashboard.414e45f0d379f497150e.hot-update.js", + "/chunks/invoices.414e45f0d379f497150e.hot-update.js": "/chunks/invoices.414e45f0d379f497150e.hot-update.js", + "/chunks/plan-subscribers.414e45f0d379f497150e.hot-update.js": "/chunks/plan-subscribers.414e45f0d379f497150e.hot-update.js", + "/chunks/platform.414e45f0d379f497150e.hot-update.js": "/chunks/platform.414e45f0d379f497150e.hot-update.js", + "/chunks/users.414e45f0d379f497150e.hot-update.js": "/chunks/users.414e45f0d379f497150e.hot-update.js", + "/chunks/sign-in.f4f216ea1c4ccae30b9e.hot-update.js": "/chunks/sign-in.f4f216ea1c4ccae30b9e.hot-update.js", + "/chunks/sign-in.7837ad144a480299b638.hot-update.js": "/chunks/sign-in.7837ad144a480299b638.hot-update.js", + "/js/main.a652a80fe2e260f247c0.hot-update.js": "/js/main.a652a80fe2e260f247c0.hot-update.js", + "/chunks/platform.c80dd57639c19a32d654.hot-update.js": "/chunks/platform.c80dd57639c19a32d654.hot-update.js", + "/chunks/platform.609b8dd4f5e4bf092303.hot-update.js": "/chunks/platform.609b8dd4f5e4bf092303.hot-update.js", + "/js/main.b3d88816d47f567e8421.hot-update.js": "/js/main.b3d88816d47f567e8421.hot-update.js", + "/js/main.a9946285ff64c7882e2e.hot-update.js": "/js/main.a9946285ff64c7882e2e.hot-update.js", + "/js/main.f839f73b41807cafd307.hot-update.js": "/js/main.f839f73b41807cafd307.hot-update.js", + "/chunks/platform.c1b9b12da455df5edf71.hot-update.js": "/chunks/platform.c1b9b12da455df5edf71.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.a1d4f7e91eb9bcd853a0.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.a1d4f7e91eb9bcd853a0.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.f3d3358cf5a9c49ec0ff.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.f3d3358cf5a9c49ec0ff.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.4d7c571d5ba286095e18.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.4d7c571d5ba286095e18.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.9406dec390d3f606f711.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.9406dec390d3f606f711.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.ba2f1bd17f1899e6337b.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.ba2f1bd17f1899e6337b.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.9756411e4c2795dd28c0.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.9756411e4c2795dd28c0.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.0e3361cf05f5491c3fe4.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.0e3361cf05f5491c3fe4.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.dbb98b7c9552aee75229.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.dbb98b7c9552aee75229.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.a46cfa472ddcfedfd1d3.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.a46cfa472ddcfedfd1d3.hot-update.js", + "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.81dddd2a458fbea706b1.hot-update.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.81dddd2a458fbea706b1.hot-update.js" } diff --git a/resources/js/components/Admin/WidgetLatestRegistrations.vue b/resources/js/components/Admin/WidgetLatestRegistrations.vue index f172719a..616fb249 100644 --- a/resources/js/components/Admin/WidgetLatestRegistrations.vue +++ b/resources/js/components/Admin/WidgetLatestRegistrations.vue @@ -6,7 +6,7 @@ diff --git a/resources/js/components/FilesView/MemberAvatar.vue b/resources/js/components/FilesView/MemberAvatar.vue index c8505995..8228c8b7 100644 --- a/resources/js/components/FilesView/MemberAvatar.vue +++ b/resources/js/components/FilesView/MemberAvatar.vue @@ -3,11 +3,10 @@ + />
32 ? 'rounded-xl' : 'rounded-lg' }, fontSize() { - if (this.size > 42) { return 'text-lg' } else if (this.size > 32) { @@ -50,6 +48,15 @@ return 'text-sm' } }, + avatar() { + if (this.size > 62) { + return this.member.data.attributes.avatar.md + } else if (this.size > 32) { + return this.member.data.attributes.avatar.sm + } else { + return this.member.data.attributes.avatar.xs + } + }, } } diff --git a/resources/js/components/Others/UserAvatar.vue b/resources/js/components/Others/UserAvatar.vue index 30531b8c..e132dcda 100644 --- a/resources/js/components/Others/UserAvatar.vue +++ b/resources/js/components/Others/UserAvatar.vue @@ -1,7 +1,7 @@ diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index 2fd23cdc..c4af7154 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -128,7 +128,7 @@ const mutations = { state.user.data.relationships.settings.data.attributes.name = name }, UPDATE_AVATAR(state, avatar) { - state.user.data.relationships.settings.data.attributes.avatar = avatar + state.user.data.relationships.settings.data.attributes.avatar.sm = avatar }, REMOVE_ITEM_FROM_FAVOURITES(state, item) { state.user.data.relationships.favourites.data = state.user.data.relationships.favourites.data.filter(folder => folder.data.id !== item.data.id) diff --git a/resources/js/views/Admin/Invoices.vue b/resources/js/views/Admin/Invoices.vue index f1dd88bb..f51f501a 100644 --- a/resources/js/views/Admin/Invoices.vue +++ b/resources/js/views/Admin/Invoices.vue @@ -34,7 +34,7 @@ diff --git a/resources/js/views/Admin/Plans/PlanTabs/PlanSubscribers.vue b/resources/js/views/Admin/Plans/PlanTabs/PlanSubscribers.vue index d8ed2930..592ee7d2 100644 --- a/resources/js/views/Admin/Plans/PlanTabs/PlanSubscribers.vue +++ b/resources/js/views/Admin/Plans/PlanTabs/PlanSubscribers.vue @@ -10,7 +10,7 @@ diff --git a/resources/js/views/Admin/Users.vue b/resources/js/views/Admin/Users.vue index 9bf92b87..7f143f28 100644 --- a/resources/js/views/Admin/Users.vue +++ b/resources/js/views/Admin/Users.vue @@ -24,7 +24,7 @@ diff --git a/resources/js/views/Admin/Users/User.vue b/resources/js/views/Admin/Users/User.vue index f3ab924a..809d8d81 100644 --- a/resources/js/views/Admin/Users/User.vue +++ b/resources/js/views/Admin/Users/User.vue @@ -8,7 +8,7 @@
- +
diff --git a/resources/js/views/Auth/SignIn.vue b/resources/js/views/Auth/SignIn.vue index 97abcf40..575e18e6 100644 --- a/resources/js/views/Auth/SignIn.vue +++ b/resources/js/views/Auth/SignIn.vue @@ -34,7 +34,7 @@
- +

{{ $t('page_sign_in.title', {name: checkedAccount.name}) }}

{{ $t('page_sign_in.subtitle') }}:

@@ -64,7 +64,7 @@
- +

{{ checkedAccount.name }}

{{ $t('page_not_verified.subtitle') }}

@@ -78,7 +78,7 @@
- +

{{ $t('page_sign_in_2fa_title', {name: checkedAccount.name}) }}

{{ $t('page_sign_in_2fa_subtitle') }}:

@@ -114,7 +114,7 @@
- +

{{ checkedAccount.name }}

{{ $t('page_sign_in.2fa_recovery_subtitle') }}:

diff --git a/resources/js/views/Profile.vue b/resources/js/views/Profile.vue index 36b31ace..0770ee0b 100644 --- a/resources/js/views/Profile.vue +++ b/resources/js/views/Profile.vue @@ -26,7 +26,7 @@
diff --git a/src/App/Console/Commands/SetupDevEnvironment.php b/src/App/Console/Commands/SetupDevEnvironment.php index b845c256..146b7b69 100644 --- a/src/App/Console/Commands/SetupDevEnvironment.php +++ b/src/App/Console/Commands/SetupDevEnvironment.php @@ -17,6 +17,7 @@ use Domain\Pages\Actions\SeedDefaultPagesAction; use Domain\Settings\Actions\SeedDefaultSettingsAction; use Domain\Localization\Actions\SeedDefaultLanguageAction; use Domain\SetupWizard\Actions\CreateDiskDirectoriesAction; +use Intervention\Image\ImageManagerStatic as Image; class SetupDevEnvironment extends Command { @@ -99,10 +100,12 @@ class SetupDevEnvironment extends Command 'email_verified_at' => now(), ]); + $avatar_name = $this->generate_avatar('avatar-01.png'); + $user ->settings() ->create([ - 'avatar' => 'avatars/avatar-01.png', + 'avatar' => $avatar_name, 'storage_capacity' => 5, 'name' => 'Jane Doe', 'address' => $this->faker->address, @@ -114,8 +117,6 @@ class SetupDevEnvironment extends Command 'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']), ]); - Storage::putFileAs('avatars', storage_path('demo/avatars/avatar-01.png'), 'avatar-01.png', 'private'); - // Show user credentials $this->info('Default admin account created. Email: howdy@hi5ve.digital and Password: vuefilemanager'); } @@ -158,10 +159,12 @@ class SetupDevEnvironment extends Command 'email_verified_at' => now(), ]); + $avatar_name = $this->generate_avatar($user['avatar']); + $newbie ->settings() ->create([ - 'avatar' => "avatars/{$user['avatar']}", + 'avatar' => $avatar_name, 'storage_capacity' => 5, 'name' => $this->faker->name, 'address' => $this->faker->address, @@ -173,8 +176,6 @@ class SetupDevEnvironment extends Command 'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']), ]); - Storage::putFileAs('avatars', storage_path("demo/avatars/{$user['avatar']}"), $user['avatar'], 'private'); - $this->info("Generated user with email: $newbie->email and Password: vuefilemanager"); }); } @@ -1119,4 +1120,33 @@ class SetupDevEnvironment extends Command $this->call('config:clear'); $this->call('view:clear'); } + + /** + * @param $avatar + * @return string + * @throws \Illuminate\Contracts\Filesystem\FileNotFoundException + */ + private function generate_avatar($avatar): string + { + $image = \Illuminate\Support\Facades\File::get(storage_path("/demo/avatars/{$avatar}")); + + // Create avatar name + $avatar_name = Str::uuid() . '.png'; + + // Create intervention image + $img = Image::make($image); + + // Generate avatar + collect(config('vuefilemanager.avatar_sizes')) + ->each(function ($size) use ($img, $image, $avatar_name) { + + // fit thumbnail + $img->fit($size['size'], $size['size'])->stream(); + + // Store thumbnail to disk + Storage::put("avatars/{$size['name']}-{$avatar_name}", $img); + }); + + return $avatar_name; + } } diff --git a/src/App/Users/Controllers/Account/UpdateProfileSettingsController.php b/src/App/Users/Controllers/Account/UpdateProfileSettingsController.php index e21f6b6e..e1258c06 100644 --- a/src/App/Users/Controllers/Account/UpdateProfileSettingsController.php +++ b/src/App/Users/Controllers/Account/UpdateProfileSettingsController.php @@ -1,6 +1,7 @@ all(), [ - 'avatar' => 'sometimes|file', - 'name' => 'string', - 'value' => 'string', - ]); - - // Return error - if ($validator->fails()) { - abort(400, 'Bad input'); - } - // Get user $user = Auth::user(); // Check if is demo - abort_if(is_demo_account($user->email), 204, 'Done.'); + abort_if(is_demo_account(), 204, 'Done.'); // Update avatar if ($request->hasFile('avatar')) { diff --git a/src/App/Users/Models/UserSettings.php b/src/App/Users/Models/UserSettings.php index fd20bb04..b74943d6 100644 --- a/src/App/Users/Models/UserSettings.php +++ b/src/App/Users/Models/UserSettings.php @@ -16,7 +16,7 @@ class UserSettings extends Model /** * Format avatar to full url * - * @return \Illuminate\Contracts\Routing\UrlGenerator|string + * @return \Illuminate\Contracts\Routing\UrlGenerator|string|array */ public function getAvatarAttribute() { @@ -27,7 +27,14 @@ class UserSettings extends Model // Get avatar from local storage if ($this->attributes['avatar']) { - return url('/' . $this->attributes['avatar']); + + $link = []; + + foreach (config('vuefilemanager.avatar_sizes') as $item) { + $link[$item['name']] = url("/avatars/{$item['name']}-{$this->attributes['avatar']}"); + } + + return $link; } return null; diff --git a/src/App/Users/Requests/UpdateUserProfileSettingsRequest.php b/src/App/Users/Requests/UpdateUserProfileSettingsRequest.php new file mode 100644 index 00000000..579446e7 --- /dev/null +++ b/src/App/Users/Requests/UpdateUserProfileSettingsRequest.php @@ -0,0 +1,32 @@ + 'sometimes|file', + 'name' => 'string', + 'value' => 'string', + ]; + } +} diff --git a/src/Support/helpers.php b/src/Support/helpers.php index 0c8f711d..a2d0c272 100644 --- a/src/Support/helpers.php +++ b/src/Support/helpers.php @@ -320,40 +320,42 @@ if (! function_exists('is_visitor')) { if (! function_exists('store_avatar')) { /** - * Store user avatar to storage - * - * @param $request - * @param $name - * @return string|null + * Generate multiple avatar sizes and store it in app storage */ - function store_avatar($request, $name) + function store_avatar($request, $name): ?string { - if (! $request->hasFile($name)) { + // Check if file exist in http request + if (!$request->hasFile($name)) { return null; } + // Get file $image = $request->file($name); - // Store avatar - $image_path = Str::random(16) . '-' . $image->getClientOriginalName(); - - if (in_array($image->getClientMimeType(), ['image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/webp'])) { - // Create intervention image - $img = Image::make($image->getRealPath()); - - // Generate thumbnail - $img->fit('150', '150')->stream(); - - // Store thumbnail to disk - Storage::put("avatars/$image_path", $img); + // Check supported file extension + if (! in_array($image->getClientMimeType(), ['image/gif', 'image/jpeg', 'image/jpg', 'image/png', 'image/webp'])) { + return null; } - if ($image->getClientMimeType() === 'image/svg+xml') { - Storage::putFileAs('avatars', $image, $image_path); - } + // Generate avatar name + $avatar_name = Str::uuid() . '.' . $image->getClientOriginalExtension(); + + // Create intervention image + $intervention = Image::make($image->getRealPath()); + + // Generate avatar sizes + collect(config('vuefilemanager.avatar_sizes')) + ->each(function ($size) use ($intervention, $avatar_name) { + + // fit thumbnail + $intervention->fit($size['size'], $size['size'])->stream(); + + // Store thumbnail to disk + Storage::put("avatars/{$size['name']}-{$avatar_name}", $intervention); + }); // Return path to image - return "avatars/$image_path"; + return $avatar_name; } } @@ -374,7 +376,7 @@ if (! function_exists('store_system_image')) { $image = $request->file($name); // Store avatar - $filename = Str::random(8) . '-' . str_replace(' ', '', $image->getClientOriginalName()); + $filename = Str::uuid() . $image->getClientOriginalExtension(); // Store image to disk Storage::putFileAs('system', $image, $filename); diff --git a/tests/App/Users/UserAccountTest.php b/tests/App/Users/UserAccountTest.php index 1858d253..240ed2e6 100644 --- a/tests/App/Users/UserAccountTest.php +++ b/tests/App/Users/UserAccountTest.php @@ -114,8 +114,12 @@ class UserAccountTest extends TestCase 'avatar' => $avatar, ])->assertStatus(204); - Storage::disk('local') - ->assertExists($user->settings->getRawOriginal('avatar')); + collect(config('vuefilemanager.avatar_sizes')) + ->each(fn ($size) => + Storage::disk('local') + ->assertExists("avatars/{$size['name']}-{$user->settings->getRawOriginal('avatar')}") + ); + } /**