Merge branch 'fraud-prevention-mechanism'

# Conflicts:
#	public/chunks/admin.js
#	public/chunks/payments/settings.js
#	public/chunks/platform.js
#	public/chunks/settings.js
#	public/chunks/status-check.js
#	public/css/tailwind.css
#	public/js/main.js
#	public/mix-manifest.json
#	src/App/Providers/AppServiceProvider.php
#	tests/Domain/Admin/AdminTest.php
This commit is contained in:
Čarodej
2022-06-30 10:54:13 +02:00
25 changed files with 536 additions and 105 deletions

View File

@@ -19,7 +19,7 @@
class="vue-feather text-theme shrink-0"
/>
<alert-triangle-icon
v-if="['billing-alert', 'insufficient-balance'].includes(notification.data.attributes.category)"
v-if="['billing-alert', 'insufficient-balance', 'payment-alert'].includes(notification.data.attributes.category)"
size="22"
class="vue-feather text-theme shrink-0"
/>

View File

@@ -1,7 +1,7 @@
<template>
<div v-if="$store.getters.isLimitedUser" class="bg-red-500 py-1 text-center">
<div v-if="$store.getters.userLimitationReason" class="bg-gradient-to-r from-red-600 to-red-500 py-2.5 px-1 text-center leading-none">
<router-link :to="{ name: 'Billing' }" class="text-xs font-bold text-white">
{{ $t('restricted_account_warning') }}
{{ $t('restricted_account_warning') + ' ' + $store.getters.userLimitationReason }}
</router-link>
</div>
</template>

View File

@@ -201,10 +201,7 @@ const mutations = {
}
const getters = {
isLimitedUser: (state) =>
state.user &&
state.user.data.relationships.failedPayments &&
state.user.data.relationships.failedPayments.data.length === 3,
userLimitationReason: (state) => state.user && state.user.data.meta.restrictions.reason,
permission: (state) => state.permission,
user: (state) => state.user,
}

View File

@@ -75,6 +75,49 @@
</AppInputButton>
</div>
<!--Fraud Prevention Mechanism Rules-->
<div v-if="config.subscriptionType === 'metered' && allowedPayments" class="card shadow-card">
<FormLabel icon="shield">
{{ $t('Fraud Prevention Mechanism Rules') }}
</FormLabel>
<AppInputSwitch
:title="$t('allow_limit_usage_in_new_accounts')"
:description="$t('limit_usage_description_for_restrictions')"
>
<SwitchInput
@input="$updateText('/admin/settings', 'limit_usage_in_new_accounts', settings.limitUsageInNewAccounts)"
v-model="settings.limitUsageInNewAccounts"
:state="settings.limitUsageInNewAccounts"
/>
</AppInputSwitch>
<AppInputText
v-if="settings.limitUsageInNewAccounts"
class="-mt-3"
>
<input
@input="$updateText('/admin/settings', 'limit_usage_in_new_accounts_amount', settings.limitUsageInNewAccountsAmount)"
v-model="settings.limitUsageInNewAccountsAmount"
:placeholder="$t('Max Usage Amount...')"
type="number"
class="focus-border-theme input-dark"
/>
</AppInputText>
<AppInputSwitch
:title="$t('allow_limit_usage_bigger_than_balance')"
:description="$t('limit_usage_description_for_restrictions')"
:is-last="true"
>
<SwitchInput
@input="$updateText('/admin/settings', 'usage_bigger_than_balance', settings.usageBiggerThanBalance)"
v-model="settings.usageBiggerThanBalance"
:state="settings.usageBiggerThanBalance"
/>
</AppInputSwitch>
</div>
<!--Stripe method configuration-->
<div v-if="allowedPayments" class="card shadow-card">
<img :src="$getPaymentLogo('stripe')" alt="Stripe" class="mb-8 h-8" />
@@ -518,10 +561,13 @@ export default {
}
},
computed: {
...mapGetters(['config']),
...mapGetters([
'config'
]),
},
data() {
return {
settings: undefined,
allowedRegistrationBonus: true,
registrationBonusAmount: undefined,
@@ -661,6 +707,23 @@ export default {
})
}
},
mounted() {
axios
.get('/api/admin/settings', {
params: {
column: 'limit_usage_in_new_accounts|limit_usage_in_new_accounts_amount|usage_bigger_than_balance',
},
})
.then((response) => {
this.isLoading = false
this.settings = {
limitUsageInNewAccounts: parseInt(response.data.limit_usage_in_new_accounts),
limitUsageInNewAccountsAmount: parseInt(response.data.limit_usage_in_new_accounts_amount),
usageBiggerThanBalance: parseInt(response.data.usage_bigger_than_balance),
}
})
},
created() {
// Set payment description
this.stripe.paymentDescription = this.config.stripe_payment_description

View File

@@ -111,7 +111,7 @@ export default {
DragUI,
},
computed: {
...mapGetters(['isVisibleSidebar', 'isLimitedUser', 'config', 'currentFolder']),
...mapGetters(['isVisibleSidebar', 'config', 'currentFolder']),
},
data() {
return {