diff --git a/app/(dashboard)/bookkeeping/[id]/page.tsx b/app/(dashboard)/bookkeeping/[id]/page.tsx
index 61a190f1..5b51cb46 100644
--- a/app/(dashboard)/bookkeeping/[id]/page.tsx
+++ b/app/(dashboard)/bookkeeping/[id]/page.tsx
@@ -5,7 +5,8 @@ import Link from 'next/link'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import { Button } from '@/components/ui/button'
import { AccountNumber } from '@/components/ui/account-number'
-import { Loader2, ArrowLeft, Paperclip, AlertTriangle } from 'lucide-react'
+import { Loader2, ArrowLeft, Paperclip, AlertTriangle, Lock } from 'lucide-react'
+import { useCanWrite } from '@/lib/hooks/use-can-write'
import JournalEntryAttachments from '@/components/bookkeeping/JournalEntryAttachments'
import JournalEntryStatusBadge, { sourceTypeLabels } from '@/components/bookkeeping/JournalEntryStatusBadge'
import CorrectionEntryDialog from '@/components/bookkeeping/CorrectionEntryDialog'
@@ -14,6 +15,7 @@ import type { JournalEntry, JournalEntryLine } from '@/types'
export default function JournalEntryDetailPage({ params }: { params: Promise<{ id: string }> }) {
const { id } = use(params)
+ const { canWrite } = useCanWrite()
const [entry, setEntry] = useState(null)
const [chain, setChain] = useState([])
const [isLoading, setIsLoading] = useState(true)
@@ -124,7 +126,10 @@ export default function JournalEntryDetailPage({ params }: { params: Promise<{ i
size="sm"
className="w-full sm:w-auto"
onClick={() => setShowCorrection(true)}
+ disabled={!canWrite}
+ title={!canWrite ? 'Du har endast läsbehörighet i detta företag' : undefined}
>
+ {!canWrite && }
Skapa ändringsverifikation
)}
diff --git a/app/(dashboard)/customers/[id]/page.tsx b/app/(dashboard)/customers/[id]/page.tsx
index 0cc878fc..cfa6d9fa 100644
--- a/app/(dashboard)/customers/[id]/page.tsx
+++ b/app/(dashboard)/customers/[id]/page.tsx
@@ -23,7 +23,9 @@ import {
Trash2,
Loader2,
Receipt,
+ Lock,
} from 'lucide-react'
+import { useCanWrite } from '@/lib/hooks/use-can-write'
import type { Customer, CustomerType, CreateCustomerInput } from '@/types'
const customerTypeLabels: Record = {
@@ -63,6 +65,7 @@ export default function CustomerDetailPage({
const { id } = use(params)
const router = useRouter()
const { toast } = useToast()
+ const { canWrite } = useCanWrite()
const [customer, setCustomer] = useState(null)
const [isLoading, setIsLoading] = useState(true)
const [isEditOpen, setIsEditOpen] = useState(false)
@@ -203,8 +206,14 @@ export default function CustomerDetailPage({
-
diff --git a/app/(dashboard)/customers/page.tsx b/app/(dashboard)/customers/page.tsx
index 3d32b0ad..e0a3c799 100644
--- a/app/(dashboard)/customers/page.tsx
+++ b/app/(dashboard)/customers/page.tsx
@@ -8,11 +8,12 @@ import { Badge } from '@/components/ui/badge'
import { Input } from '@/components/ui/input'
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
import { useToast } from '@/components/ui/use-toast'
-import { Plus, Search, Users } from 'lucide-react'
+import { Plus, Search, Users, Lock } from 'lucide-react'
import CustomerForm from '@/components/customers/CustomerForm'
import { EmptyCustomers } from '@/components/ui/empty-state'
import Link from 'next/link'
import { useCompany } from '@/contexts/CompanyContext'
+import { useCanWrite } from '@/lib/hooks/use-can-write'
import type { Customer, CustomerType, CreateCustomerInput } from '@/types'
const customerTypeLabels: Record = {
@@ -33,6 +34,7 @@ function getInitials(name: string): string {
export default function CustomersPage() {
const { company } = useCompany()
+ const { canWrite } = useCanWrite()
const [customers, setCustomers] = useState([])
const [isLoading, setIsLoading] = useState(true)
const [searchTerm, setSearchTerm] = useState('')
@@ -112,8 +114,15 @@ export default function CustomersPage() {
-
-
-
+ {canWrite ? (
+
+
+
+ Registrera faktura
+
+
+ ) : (
+
+
Registrera faktura
-
+ )}
{/* Summary cards */}
@@ -182,7 +194,7 @@ export default function SupplierInvoicesPage() {
? 'Registrera din första leverantörsfaktura'
: 'Inga fakturor i denna kategori'}
- {activeTab === 'all' && (
+ {activeTab === 'all' && canWrite && (
diff --git a/app/(dashboard)/suppliers/[id]/page.tsx b/app/(dashboard)/suppliers/[id]/page.tsx
index 2ed29c76..05525a6e 100644
--- a/app/(dashboard)/suppliers/[id]/page.tsx
+++ b/app/(dashboard)/suppliers/[id]/page.tsx
@@ -7,7 +7,8 @@ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import { Badge } from '@/components/ui/badge'
import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'
import { useToast } from '@/components/ui/use-toast'
-import { ArrowLeft, Edit, Trash2, FileText } from 'lucide-react'
+import { ArrowLeft, Edit, Trash2, FileText, Lock } from 'lucide-react'
+import { useCanWrite } from '@/lib/hooks/use-can-write'
import SupplierForm from '@/components/suppliers/SupplierForm'
import Link from 'next/link'
import { DestructiveConfirmDialog, useDestructiveConfirm } from '@/components/ui/destructive-confirm-dialog'
@@ -24,6 +25,7 @@ function formatAmount(amount: number): string {
}
export default function SupplierDetailPage() {
+ const { canWrite } = useCanWrite()
const params = useParams()
const router = useRouter()
const { toast } = useToast()
@@ -153,12 +155,23 @@ export default function SupplierDetailPage() {
- setIsEditOpen(true)}>
-
+ setIsEditOpen(true)}
+ disabled={!canWrite}
+ title={!canWrite ? 'Du har endast läsbehörighet i detta företag' : undefined}
+ >
+ {canWrite ? : }
Redigera
-
-
+
+ {canWrite ? : }
diff --git a/app/(dashboard)/suppliers/page.tsx b/app/(dashboard)/suppliers/page.tsx
index 37350712..b7ef0efa 100644
--- a/app/(dashboard)/suppliers/page.tsx
+++ b/app/(dashboard)/suppliers/page.tsx
@@ -8,10 +8,11 @@ import { Badge } from '@/components/ui/badge'
import { Input } from '@/components/ui/input'
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog'
import { useToast } from '@/components/ui/use-toast'
-import { Plus, Search, Building2, Globe } from 'lucide-react'
+import { Plus, Search, Building2, Globe, Lock } from 'lucide-react'
import SupplierForm from '@/components/suppliers/SupplierForm'
import Link from 'next/link'
import { useCompany } from '@/contexts/CompanyContext'
+import { useCanWrite } from '@/lib/hooks/use-can-write'
import type { Supplier, SupplierType, CreateSupplierInput } from '@/types'
const supplierTypeLabels: Record = {
@@ -28,6 +29,7 @@ const supplierTypeIcons: Record = {
export default function SuppliersPage() {
const { company } = useCompany()
+ const { canWrite } = useCanWrite()
const [suppliers, setSuppliers] = useState([])
const [isLoading, setIsLoading] = useState(true)
const [searchTerm, setSearchTerm] = useState('')
@@ -108,8 +110,15 @@ export default function SuppliersPage() {