diff --git a/resources/js/Components/Billing/BillingBanner.vue b/resources/js/Components/Billing/BillingBanner.vue index bbaf3440..9f45eee3 100644 --- a/resources/js/Components/Billing/BillingBanner.vue +++ b/resources/js/Components/Billing/BillingBanner.vue @@ -7,9 +7,15 @@ import { } from '@heroicons/vue/16/solid'; import { Link } from '@inertiajs/vue3'; import { computed } from 'vue'; -import { isBlocked, isFreePlan, isInTrial } from '@/utils/billing'; +import { + isBillingActivated, + isBlocked, + isFreePlan, + isInTrial, +} from '@/utils/billing'; import { useSessionStorage } from '@vueuse/core'; import { getCurrentOrganizationId } from '@/utils/useUser'; +import { canManageBilling } from '@/utils/permissions'; const hideTrialBanner = useSessionStorage( 'showTrialBanner-' + getCurrentOrganizationId(), @@ -46,13 +52,13 @@ const showFreeUpgradeBanner = computed(
- +
Upgrade now
- @@ -74,13 +80,15 @@ const showFreeUpgradeBanner = computed(
- +
Upgrade now
- @@ -102,13 +110,15 @@ const showFreeUpgradeBanner = computed( >
- +
Upgrade now
- diff --git a/resources/js/Components/Common/Member/MemberInviteModal.vue b/resources/js/Components/Common/Member/MemberInviteModal.vue index 5e6f01eb..b44c865c 100644 --- a/resources/js/Components/Common/Member/MemberInviteModal.vue +++ b/resources/js/Components/Common/Member/MemberInviteModal.vue @@ -17,7 +17,7 @@ import { isInTrial, } from '@/utils/billing'; import { CreditCardIcon, UserGroupIcon } from '@heroicons/vue/20/solid'; -import { canUpdateOrganization } from '@/utils/permissions'; +import { canManageBilling, canUpdateOrganization } from '@/utils/permissions'; import { api } from '@/packages/api/src'; import type { MemberRole } from '@/packages/api/src'; import { z } from 'zod'; @@ -117,7 +117,9 @@ const inviteMembersIsAllowed = computed(() => { please upgrade to a paid plan.

- + - - + + Go to Billing @@ -63,7 +62,7 @@ import { storeToRefs } from 'pinia'; import { useNotificationsStore } from '@/utils/notification'; import DialogModal from '@/packages/ui/src/DialogModal.vue'; import { isBillingActivated } from '@/utils/billing'; -import { canUpdateOrganization } from '@/utils/permissions'; +import { canManageBilling } from '@/utils/permissions'; import { CreditCardIcon, XCircleIcon } from '@heroicons/vue/20/solid'; import { Link } from '@inertiajs/vue3'; import PrimaryButton from '../packages/ui/src/Buttons/PrimaryButton.vue'; diff --git a/resources/js/Components/OrganizationSwitcher.vue b/resources/js/Components/OrganizationSwitcher.vue index 54fad655..44c59520 100644 --- a/resources/js/Components/OrganizationSwitcher.vue +++ b/resources/js/Components/OrganizationSwitcher.vue @@ -5,7 +5,7 @@ import DropdownLink from '@/Components/DropdownLink.vue'; import { usePage } from '@inertiajs/vue3'; import type { Organization, User } from '@/types/models'; import { isBillingActivated } from '@/utils/billing'; -import { canUpdateOrganization } from '@/utils/permissions'; +import { canManageBilling } from '@/utils/permissions'; import { switchOrganization } from '@/utils/useOrganization'; const page = usePage<{ @@ -79,7 +79,7 @@ const switchToTeam = (organization: Organization) => { Billing diff --git a/resources/js/Layouts/AppLayout.vue b/resources/js/Layouts/AppLayout.vue index af5e7500..5ef8775f 100644 --- a/resources/js/Layouts/AppLayout.vue +++ b/resources/js/Layouts/AppLayout.vue @@ -23,6 +23,7 @@ import { onMounted, ref } from 'vue'; import NotificationContainer from '@/Components/NotificationContainer.vue'; import { initializeStores, refreshStores } from '@/utils/init'; import { + canManageBilling, canUpdateOrganization, canViewClients, canViewMembers, @@ -160,9 +161,7 @@ const page = usePage<{
- - + + Go to Billing diff --git a/resources/js/utils/permissions.ts b/resources/js/utils/permissions.ts index 2d81eff6..dbdcdb70 100644 --- a/resources/js/utils/permissions.ts +++ b/resources/js/utils/permissions.ts @@ -96,3 +96,7 @@ export function canCreateTags() { export function canDeleteTags() { return currentUserHasPermission('tags:delete'); } + +export function canManageBilling() { + return currentUserHasPermission('billing'); +}