set default max team members in admin and setup wizard

This commit is contained in:
Čarodej
2022-04-05 07:47:37 +02:00
parent 2c86c62d7f
commit d386f70be8
6 changed files with 131 additions and 69 deletions

View File

@@ -1,40 +1,12 @@
<template>
<PageTab :is-loading="isLoading">
<!--Store & Upload-->
<div v-if="app" class="card shadow-card">
<FormLabel>
{{ $t('storage_upload') }}
<div v-if="app" class="card shadow-card">
<FormLabel>
{{ $t('Upload Settings') }}
</FormLabel>
<!--Available only when is not metered billing-->
<div v-if="config.subscriptionType !== 'metered'">
<AppInputSwitch
:title="$t('admin_settings.others.storage_limit')"
:description="$t('admin_settings.others.storage_limit_help')"
>
<SwitchInput
@input="$updateText('/admin/settings', 'storage_limitation', app.storageLimitation)"
v-model="app.storageLimitation"
:state="app.storageLimitation"
class="switch"
/>
</AppInputSwitch>
<AppInputText v-if="app.storageLimitation" :title="$t('admin_settings.others.default_storage')">
<input
@input="$updateText('/admin/settings', 'default_max_storage_amount', app.defaultStorage)"
v-model="app.defaultStorage"
min="1"
max="999999999"
:placeholder="$t('admin_settings.others.default_storage_plac')"
type="number"
class="focus-border-theme input-dark"
/>
</AppInputText>
</div>
<AppInputText
<AppInputText
:title="$t('admin_settings.others.upload_limit')"
:description="$t('admin_settings.others.upload_limit_help')"
>
@@ -78,6 +50,52 @@
class="focus-border-theme input-dark"
/>
</AppInputText>
</div>
<!--Store & Upload-->
<div v-if="app" class="card shadow-card">
<FormLabel>
{{ $t('User Features') }}
</FormLabel>
<!--Available only when is not metered billing-->
<div v-if="config.subscriptionType !== 'metered'">
<AppInputSwitch
:title="$t('admin_settings.others.storage_limit')"
:description="$t('admin_settings.others.storage_limit_help')"
>
<SwitchInput
@input="$updateText('/admin/settings', 'storage_limitation', app.storageLimitation)"
v-model="app.storageLimitation"
:state="app.storageLimitation"
class="switch"
/>
</AppInputSwitch>
<AppInputText v-if="app.storageLimitation" :title="$t('admin_settings.others.default_storage')">
<input
@input="$updateText('/admin/settings', 'default_max_storage_amount', app.defaultStorage)"
v-model="app.defaultStorage"
min="1"
max="999999999"
:placeholder="$t('admin_settings.others.default_storage_plac')"
type="number"
class="focus-border-theme input-dark"
/>
</AppInputText>
</div>
<AppInputText :title="$t('max_team_members')" :description="$t('zero_for_unlimited_members')" :is-last="true">
<input
@input="$updateText('/admin/settings', 'default_max_team_member', app.teamsDefaultMembers)"
v-model="app.teamsDefaultMembers"
min="1"
max="999999999"
:placeholder="$t('admin_settings.others.default_storage_plac')"
type="number"
class="focus-border-theme input-dark"
/>
</AppInputText>
</div>
<!-- ReCaptcha -->
@@ -424,7 +442,7 @@ export default {
axios
.get('/api/admin/settings', {
params: {
column: 'contact_email|google_analytics|default_max_storage_amount|storage_limitation|mimetypes_blacklist|upload_limit|subscriptionType|chunk_size',
column: 'contact_email|google_analytics|default_max_storage_amount|storage_limitation|mimetypes_blacklist|upload_limit|subscriptionType|chunk_size|default_max_team_member',
},
})
.then((response) => {
@@ -439,6 +457,7 @@ export default {
uploadLimit: response.data.upload_limit,
subscriptionType: response.data.subscriptionType,
chunkSize: response.data.chunk_size,
teamsDefaultMembers: response.data.default_max_team_member,
}
})
},

View File

@@ -124,37 +124,6 @@
</AppInputText>
</ValidationProvider>
<AppInputSwitch
title="Storage Limitation"
description="If this value is off, all users will have infinity storage capacity and you won't be able to charge your users for storage plan."
>
<SwitchInput v-model="app.storageLimitation" :state="app.storageLimitation" />
</AppInputSwitch>
<ValidationProvider
tag="div"
mode="passive"
name="Default Storage Space"
rules="required"
v-slot="{ errors }"
>
<AppInputText
v-if="app.storageLimitation"
title="Default Storage Space for Accounts"
:error="errors[0]"
>
<input
class="focus-border-theme input-dark"
v-model="app.defaultStorage"
min="1"
max="999999999"
placeholder="Set default storage space in GB"
type="number"
:class="{ '!border-rose-600': errors[0] }"
/>
</AppInputText>
</ValidationProvider>
<AppInputSwitch
title="Allow User Registration"
description="You can disable public registration for new users. You will still able to create new users in administration panel."
@@ -164,6 +133,67 @@
</AppInputSwitch>
</div>
<div class="card text-left shadow-card">
<FormLabel>User Features</FormLabel>
<AppInputSwitch
title="Storage Limitation"
description="If this value is off, all users will have infinity storage capacity and you won't be able to charge your users for storage plan."
>
<SwitchInput v-model="app.storageLimitation" :state="app.storageLimitation" />
</AppInputSwitch>
<ValidationProvider
tag="div"
mode="passive"
name="Default Storage Space"
rules="required"
v-slot="{ errors }"
>
<AppInputText
v-if="app.storageLimitation"
title="Default Storage Space for Accounts"
:error="errors[0]"
>
<input
class="focus-border-theme input-dark"
v-model="app.defaultStorage"
min="1"
max="999999999"
placeholder="Set default storage space in GB"
type="number"
:class="{ '!border-rose-600': errors[0] }"
/>
</AppInputText>
</ValidationProvider>
<ValidationProvider
tag="div"
mode="passive"
name="Default Storage Space"
rules="required"
v-slot="{ errors }"
>
<AppInputText
v-if="app.teamsDefaultMembers"
title="Max Team Members"
description="Type -1 to set unlimited team members."
:error="errors[0]"
:is-last="true"
>
<input
class="focus-border-theme input-dark"
v-model="app.teamsDefaultMembers"
min="1"
max="999999999"
placeholder="Set default max team members"
type="number"
:class="{'!border-rose-600': errors[0]}"
/>
</AppInputText>
</ValidationProvider>
</div>
<div v-if="isExtended" class="card text-left shadow-card">
<FormLabel>Subscription</FormLabel>
@@ -258,7 +288,8 @@ export default {
touch_icon: undefined,
contactMail: undefined,
googleAnalytics: undefined,
defaultStorage: '5',
defaultStorage: 5,
teamsDefaultMembers: 5,
userRegistration: 1,
storageLimitation: 1,
},
@@ -294,6 +325,7 @@ export default {
if (this.app.googleAnalytics) formData.append('googleAnalytics', this.app.googleAnalytics)
if (this.app.defaultStorage) formData.append('defaultStorage', this.app.defaultStorage)
if (this.app.teamsDefaultMembers) formData.append('teamsDefaultMembers', this.app.teamsDefaultMembers)
if (this.app.logo) formData.append('logo', this.app.logo)

View File

@@ -96,7 +96,7 @@
allowHomepage: {{ $settings->allow_homepage ?? 1 }},
storageLimit: {{ $settings->storage_limitation ?? 1 }},
teamsDefaultMembers: {{ $settings->default_max_team_member ?? 5 }},
teamsDefaultMembers: {{ $settings->default_max_team_member ?? 10 }},
storageDefaultSpace: {{ $settings->default_max_storage_amount ?? 5 }},
storageDefaultSpaceFormatted: '{{ isset($settings->default_max_storage_amount) ? format_gigabytes($settings->default_max_storage_amount) : format_gigabytes(5) }}',
mimetypesBlacklist: '{{ isset($settings->mimetypes_blacklist) ? $settings->mimetypes_blacklist: null}}',