mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
Generate multiple avatar sizes
This commit is contained in:
@@ -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',
|
||||
],
|
||||
]
|
||||
];
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<td style="width: 300px">
|
||||
<router-link :to="{name: 'UserDetail', params: {id: row.data.id}}">
|
||||
<DatatableCellImage
|
||||
:image="row.data.relationships.settings.data.attributes.avatar"
|
||||
:image="row.data.relationships.settings.data.attributes.avatar.sm"
|
||||
:title="row.data.relationships.settings.data.attributes.name"
|
||||
:description="row.data.attributes.email"
|
||||
/>
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
<img
|
||||
:style="{width: size + 'px', height: size + 'px'}"
|
||||
v-if="member.data.attributes.avatar"
|
||||
:src="member.data.attributes.avatar"
|
||||
:alt="member.data.attributes.name"
|
||||
:src="avatar"
|
||||
:class="[borderRadius, {'border-3 border-white dark:border-dark-background': isBorder}]"
|
||||
class=""
|
||||
>
|
||||
/>
|
||||
<div
|
||||
v-else
|
||||
class="flex items-center justify-center"
|
||||
@@ -41,7 +40,6 @@
|
||||
return this.size > 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
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="user-avatar" :class="size">
|
||||
<span v-if="isIncompletePayment || isNearlyFullStorageCapacity" class="notification"></span>
|
||||
<img :src="user.data.relationships.settings.data.attributes.avatar" :alt="user.data.relationships.settings.data.attributes.name">
|
||||
<img :src="user.data.relationships.settings.data.attributes.avatar.sm" :alt="user.data.relationships.settings.data.attributes.name">
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
2
resources/js/store/modules/userAuth.js
vendored
2
resources/js/store/modules/userAuth.js
vendored
@@ -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)
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<router-link v-if="row.relationships" :to="{name: 'UserInvoices', params: {id: row.relationships.user.data.id}}">
|
||||
<DatatableCellImage
|
||||
image-size="small"
|
||||
:image="row.relationships.user.data.attributes.avatar"
|
||||
:image="row.relationships.user.data.attributes.avatar.sm"
|
||||
:title="row.relationships.user.data.attributes.name"
|
||||
/>
|
||||
</router-link>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<router-link :to="{name: 'UserDetail', params: {id: row.data.id}}">
|
||||
<DatatableCellImage
|
||||
image-size="small"
|
||||
:image="row.data.relationships.settings.data.attributes.avatar"
|
||||
:image="row.data.relationships.settings.data.attributes.avatar.sm"
|
||||
:title="row.data.relationships.settings.data.attributes.name"
|
||||
/>
|
||||
</router-link>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<td style="min-width: 320px">
|
||||
<router-link :to="{name: 'UserDetail', params: {id: row.data.id}}">
|
||||
<DatatableCellImage
|
||||
:image="row.data.relationships.settings.data.attributes.avatar"
|
||||
:image="row.data.relationships.settings.data.attributes.avatar.sm"
|
||||
:title="row.data.relationships.settings.data.attributes.name"
|
||||
:description="row.data.attributes.email"
|
||||
/>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<!--User thumbnail-->
|
||||
<div class="user-thumbnail">
|
||||
<div class="avatar">
|
||||
<img :src="user.data.relationships.settings.data.attributes.avatar" :alt="user.data.relationships.settings.data.attributes.name">
|
||||
<img :src="user.data.relationships.settings.data.attributes.avatar.sm" :alt="user.data.relationships.settings.data.attributes.name">
|
||||
<!--<img :src="user.data.attributes.avatar" :alt="user.data.attributes.name" class="blurred">-->
|
||||
</div>
|
||||
<div class="info">
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<AuthContent name="sign-in" :visible="false">
|
||||
|
||||
<div class="user" v-if="checkedAccount">
|
||||
<img class="user-avatar mx-auto" :src="checkedAccount.avatar" :alt="checkedAccount.name">
|
||||
<img class="user-avatar mx-auto" :src="checkedAccount.avatar.md" :alt="checkedAccount.name">
|
||||
<h1>{{ $t('page_sign_in.title', {name: checkedAccount.name}) }}</h1>
|
||||
<h2>{{ $t('page_sign_in.subtitle') }}:</h2>
|
||||
</div>
|
||||
@@ -64,7 +64,7 @@
|
||||
<AuthContent name="not-verified" :visible="false">
|
||||
|
||||
<div class="user" v-if="checkedAccount">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar" :alt="checkedAccount.name">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar.md" :alt="checkedAccount.name">
|
||||
<h1>{{ checkedAccount.name }}</h1>
|
||||
<h2>{{ $t('page_not_verified.subtitle') }}</h2>
|
||||
</div>
|
||||
@@ -78,7 +78,7 @@
|
||||
<AuthContent name="two-factor-authentication" :visible="false">
|
||||
|
||||
<div class="user" v-if="checkedAccount">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar" :alt="checkedAccount.name">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar.md" :alt="checkedAccount.name">
|
||||
<h1> {{ $t('page_sign_in_2fa_title', {name: checkedAccount.name}) }} </h1>
|
||||
<h2> {{ $t('page_sign_in_2fa_subtitle') }}:</h2>
|
||||
</div>
|
||||
@@ -114,7 +114,7 @@
|
||||
<AuthContent name="two-factor-recovery" :visible="false">
|
||||
|
||||
<div class="user" v-if="checkedAccount">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar" :alt="checkedAccount.name">
|
||||
<img class="user-avatar" :src="checkedAccount.avatar.md" :alt="checkedAccount.name">
|
||||
<h1> {{ checkedAccount.name }} </h1>
|
||||
<h2>{{ $t('page_sign_in.2fa_recovery_subtitle') }}:</h2>
|
||||
</div>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<div class="avatar">
|
||||
<UserImageInput
|
||||
v-model="avatar"
|
||||
:avatar="user.data.relationships.settings.data.attributes.avatar"
|
||||
:avatar="user.data.relationships.settings.data.attributes.avatar.md"
|
||||
/>
|
||||
</div>
|
||||
<div class="info">
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
use App\Users\Requests\UpdateUserProfileSettingsRequest;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
@@ -12,26 +13,13 @@ class UpdateProfileSettingsController extends Controller
|
||||
/**
|
||||
* Update user settings
|
||||
*/
|
||||
public function __invoke(Request $request): Response
|
||||
public function __invoke(UpdateUserProfileSettingsRequest $request): Response
|
||||
{
|
||||
// Validate request
|
||||
// TODO: pridat validator do requestu
|
||||
$validator = Validator::make($request->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')) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
32
src/App/Users/Requests/UpdateUserProfileSettingsRequest.php
Normal file
32
src/App/Users/Requests/UpdateUserProfileSettingsRequest.php
Normal file
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
namespace App\Users\Requests;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class UpdateUserProfileSettingsRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'avatar' => 'sometimes|file',
|
||||
'name' => 'string',
|
||||
'value' => 'string',
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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')}")
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user