Compare commits
2 Commits
73e046e959
...
ea64ce9ef0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea64ce9ef0 | ||
|
|
407484f69d |
@@ -199,7 +199,7 @@ export async function checkoutAction(params: {
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single();
|
.single();
|
||||||
|
|
||||||
const isAdminUser = dbUser?.role === 'admin';
|
const isAdminUser = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung';
|
||||||
if (!isAdminUser && !dbUser?.company_id) {
|
if (!isAdminUser && !dbUser?.company_id) {
|
||||||
throw new Error('Kein Unternehmen zugewiesen. Zugriff verweigert.');
|
throw new Error('Kein Unternehmen zugewiesen. Zugriff verweigert.');
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export async function POST(request: Request) {
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single();
|
.single();
|
||||||
|
|
||||||
const isAdminUser = dbUser?.role === 'admin';
|
const isAdminUser = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung';
|
||||||
if (!isAdminUser && !dbUser?.company_id) {
|
if (!isAdminUser && !dbUser?.company_id) {
|
||||||
return NextResponse.json({ error: 'Firma erforderlich' }, { status: 403 });
|
return NextResponse.json({ error: 'Firma erforderlich' }, { status: 403 });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ async function OrderDataWrapper({
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
const isAdmin = userData?.role === 'admin'
|
const isAdmin = userData?.role === 'admin' || userData?.role === 'verwaltung'
|
||||||
const hasCompany = !!userData?.company_id
|
const hasCompany = !!userData?.company_id
|
||||||
|
|
||||||
if (!isAdmin && !hasCompany) {
|
if (!isAdmin && !hasCompany) {
|
||||||
@@ -85,7 +85,7 @@ async function OrderDataWrapper({
|
|||||||
redirect('/order')
|
redirect('/order')
|
||||||
}
|
}
|
||||||
|
|
||||||
const isAdmin = userData?.role === 'admin'
|
const isAdmin = userData?.role === 'admin' || userData?.role === 'verwaltung'
|
||||||
const isOwner = orderData.user_id === user.id
|
const isOwner = orderData.user_id === user.id
|
||||||
const isCompanyMember = userData?.company_id && orderData.company_id === userData.company_id
|
const isCompanyMember = userData?.company_id && orderData.company_id === userData.company_id
|
||||||
if (!isAdmin && !isOwner && !isCompanyMember) {
|
if (!isAdmin && !isOwner && !isCompanyMember) {
|
||||||
@@ -104,7 +104,7 @@ async function OrderDataWrapper({
|
|||||||
|
|
||||||
// Admin sees all end customers across partners
|
// Admin sees all end customers across partners
|
||||||
let endCustomers = []
|
let endCustomers = []
|
||||||
if (userData?.role === 'admin') {
|
if (userData?.role === 'admin' || userData?.role === 'verwaltung') {
|
||||||
try {
|
try {
|
||||||
const adminClient = createAdminClient()
|
const adminClient = createAdminClient()
|
||||||
const { data } = await adminClient
|
const { data } = await adminClient
|
||||||
@@ -134,7 +134,7 @@ async function OrderDataWrapper({
|
|||||||
|
|
||||||
// Fetch companies list for admin
|
// Fetch companies list for admin
|
||||||
let companies: any[] = []
|
let companies: any[] = []
|
||||||
if (userData?.role === 'admin') {
|
if (userData?.role === 'admin' || userData?.role === 'verwaltung') {
|
||||||
companies = await getCompanies().catch(() => [])
|
companies = await getCompanies().catch(() => [])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,7 +145,7 @@ async function OrderDataWrapper({
|
|||||||
initialProfile={profile}
|
initialProfile={profile}
|
||||||
initialEndCustomers={endCustomers}
|
initialEndCustomers={endCustomers}
|
||||||
initialOrder={initialOrder}
|
initialOrder={initialOrder}
|
||||||
isAdmin={userData?.role === 'admin'}
|
isAdmin={userData?.role === 'admin' || userData?.role === 'verwaltung'}
|
||||||
companies={companies}
|
companies={companies}
|
||||||
upgradeMode={mode === 'upgrade'}
|
upgradeMode={mode === 'upgrade'}
|
||||||
initialEndCustomerId={customerId || null}
|
initialEndCustomerId={customerId || null}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ export default async function OrderSuccessPage({
|
|||||||
if (error || !order) redirect('/')
|
if (error || !order) redirect('/')
|
||||||
|
|
||||||
// Berechtigung prüfen
|
// Berechtigung prüfen
|
||||||
const isAdmin = dbUser?.role === 'admin'
|
const isAdmin = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung'
|
||||||
const isOwner = order.user_id === user.id
|
const isOwner = order.user_id === user.id
|
||||||
const isCompanyMember = dbUser?.company_id && order.company_id === dbUser.company_id
|
const isCompanyMember = dbUser?.company_id && order.company_id === dbUser.company_id
|
||||||
|
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ export async function createEndCustomer(formData: EndCustomerFormData, companyId
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
const isAdmin = dbUser?.role === 'admin'
|
const isAdmin = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung'
|
||||||
const resolvedCompanyId = dbUser?.company_id || companyId
|
const resolvedCompanyId = dbUser?.company_id || companyId
|
||||||
|
|
||||||
if (!isAdmin && !resolvedCompanyId) {
|
if (!isAdmin && !resolvedCompanyId) {
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ export async function submitOrder(params: {
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
const isAdminUser = dbUser?.role === 'admin'
|
const isAdminUser = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung'
|
||||||
if (!isAdminUser && !dbUser?.company_id) {
|
if (!isAdminUser && !dbUser?.company_id) {
|
||||||
throw new Error('Sie müssen einer Firma zugewiesen sein, um eine Anfrage zu erstellen.')
|
throw new Error('Sie müssen einer Firma zugewiesen sein, um eine Anfrage zu erstellen.')
|
||||||
}
|
}
|
||||||
@@ -309,7 +309,7 @@ export async function submitOrder(params: {
|
|||||||
const { data: admins } = await adminClient
|
const { data: admins } = await adminClient
|
||||||
.from('users')
|
.from('users')
|
||||||
.select('email')
|
.select('email')
|
||||||
.eq('role', 'admin')
|
.in('role', ['admin', 'verwaltung'])
|
||||||
if (admins) {
|
if (admins) {
|
||||||
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
||||||
for (const adminEmail of adminEmails) {
|
for (const adminEmail of adminEmails) {
|
||||||
@@ -464,7 +464,7 @@ export async function updateOrderStatus(
|
|||||||
const { data: admins } = await adminClient
|
const { data: admins } = await adminClient
|
||||||
.from('users')
|
.from('users')
|
||||||
.select('email')
|
.select('email')
|
||||||
.eq('role', 'admin')
|
.in('role', ['admin', 'verwaltung'])
|
||||||
if (admins) {
|
if (admins) {
|
||||||
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
||||||
for (const adminEmail of adminEmails) {
|
for (const adminEmail of adminEmails) {
|
||||||
@@ -625,7 +625,7 @@ export async function rejectOrder(
|
|||||||
const { data: admins } = await adminClient
|
const { data: admins } = await adminClient
|
||||||
.from('users')
|
.from('users')
|
||||||
.select('email')
|
.select('email')
|
||||||
.eq('role', 'admin')
|
.in('role', ['admin', 'verwaltung'])
|
||||||
if (admins) {
|
if (admins) {
|
||||||
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
||||||
for (const adminEmail of adminEmails) {
|
for (const adminEmail of adminEmails) {
|
||||||
@@ -690,7 +690,7 @@ export async function updateOrder(
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
const isAdmin = dbUser?.role === 'admin'
|
const isAdmin = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung'
|
||||||
let isAuthorized = existingOrder.user_id === user.id
|
let isAuthorized = existingOrder.user_id === user.id
|
||||||
|
|
||||||
if (!isAuthorized && dbUser?.company_id && existingOrder.user_id) {
|
if (!isAuthorized && dbUser?.company_id && existingOrder.user_id) {
|
||||||
@@ -930,7 +930,7 @@ export async function updateOrder(
|
|||||||
const { data: admins } = await adminClient
|
const { data: admins } = await adminClient
|
||||||
.from('users')
|
.from('users')
|
||||||
.select('email')
|
.select('email')
|
||||||
.eq('role', 'admin')
|
.in('role', ['admin', 'verwaltung'])
|
||||||
if (admins) {
|
if (admins) {
|
||||||
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
const adminEmails = admins.map((a: any) => a.email).filter(Boolean)
|
||||||
for (const adminEmail of adminEmails) {
|
for (const adminEmail of adminEmails) {
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ export async function getCustomersForWizard(
|
|||||||
.eq('id', user.id)
|
.eq('id', user.id)
|
||||||
.single()
|
.single()
|
||||||
|
|
||||||
const isAdmin = dbUser?.role === 'admin'
|
const isAdmin = dbUser?.role === 'admin' || dbUser?.role === 'verwaltung'
|
||||||
|
|
||||||
let client = supabase
|
let client = supabase
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
|
|||||||
Reference in New Issue
Block a user