Skip to content

Commit da5fc3f

Browse files
committed
only show invoicing tab when module is activated
1 parent 8c66068 commit da5fc3f

File tree

4 files changed

+17
-4
lines changed

4 files changed

+17
-4
lines changed

app/Http/Middleware/HandleInertiaRequests.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public function version(Request $request): ?string
4040
public function share(Request $request): array
4141
{
4242
$hasBilling = Module::has('Billing') && Module::isEnabled('Billing');
43+
$hasInvoicing = Module::has('Invoicing') && Module::isEnabled('Invoicing');
4344

4445
/** @var BillingContract $billing */
4546
$billing = app(BillingContract::class);
@@ -48,6 +49,7 @@ public function share(Request $request): array
4849

4950
return array_merge(parent::share($request), [
5051
'has_billing_extension' => $hasBilling,
52+
'has_invoicing_extension' => $hasInvoicing,
5153
'billing' => $billing !== null && $currentOrganization !== null ? [
5254
'has_subscription' => $billing->hasSubscription($currentOrganization),
5355
'has_trial' => $billing->hasTrial($currentOrganization),

resources/js/Layouts/AppLayout.vue

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ import { initializeStores, refreshStores } from '@/utils/init';
2626
import {
2727
canManageBilling,
2828
canUpdateOrganization,
29-
canViewClients,
29+
canViewClients, canViewInvoices,
3030
canViewMembers,
3131
canViewProjects, canViewReport,
3232
canViewTags,
3333
} from '@/utils/permissions';
34-
import { isBillingActivated } from '@/utils/billing';
34+
import {isBillingActivated, isInvoicingActivated} from '@/utils/billing';
3535
import type { User } from '@/types/models';
3636
import { ArrowsRightLeftIcon } from '@heroicons/vue/16/solid';
3737
import { fetchToken, isTokenValid } from '@/utils/session';
@@ -188,6 +188,7 @@ const page = usePage<{
188188
:current="route().current('tags')"
189189
:href="route('tags')"></NavigationSidebarItem>
190190
<NavigationSidebarItem
191+
v-if="isInvoicingActivated() && canViewInvoices()"
191192
title="Invoices"
192193
:icon="DocumentTextIcon"
193194
:current="route().current('invoices')"
@@ -272,8 +273,6 @@ const page = usePage<{
272273
v-if="$slots.header"
273274
class="bg-default-background border-b border-default-background-separator shadow">
274275
<div class="pt-8 pb-3">
275-
276-
277276
<MainContainer>
278277
<slot name="header" />
279278
</MainContainer>

resources/js/utils/billing.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ export function isBillingActivated() {
99
return page.props.has_billing_extension;
1010
}
1111

12+
export function isInvoicingActivated() {
13+
const page = usePage<{
14+
has_invoicing_extension: boolean;
15+
}>();
16+
17+
return page.props.has_invoicing_extension;
18+
}
19+
1220
export function isInTrial() {
1321
const page = usePage<{
1422
billing: {

resources/js/utils/permissions.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,3 +122,7 @@ export function canDeleteReport() {
122122
export function canViewAllTimeEntries() {
123123
return currentUserHasPermission('time-entries:view:all');
124124
}
125+
export function canViewInvoices() {
126+
return currentUserHasPermission('invoices:view');
127+
}
128+

0 commit comments

Comments
 (0)