import { PageParams } from "@/types/next"; import { Page, PageActions, PageContent, PageHeader, PageTitle, } from "@/features/layout/page"; import { currentUser } from "@/lib/auth/current-user"; import { getActiveMember, getOrganization } from "@/lib/auth/auth"; import { notFound } from "next/navigation"; import { Metadata } from "next"; import { OrganizationTabs } from "@/components/wrappers/dashboard/organization/tabs/organization-tabs"; import { getOrganizationChannels } from "@/db/services/notification-channel"; import { computeOrganizationPermissions } from "@/lib/acl/organization-acl"; import { getOrganizationStorageChannels } from "@/db/services/storage-channel"; import { DeleteOrganizationButton } from "@/components/wrappers/dashboard/organization/delete-organization-button"; import { EditOrganizationDialog } from "@/features/organization/components/edit-organization.dialog"; import { db } from "@/db"; import { isNull } from "drizzle-orm"; import * as drizzleDb from "@/db"; import { eq } from "drizzle-orm"; export const metadata: Metadata = { title: "Settings", }; export default async function RoutePage(props: PageParams<{ slug: string }>) { const organization = await getOrganization({}); const user = await currentUser(); const activeMember = await getActiveMember(); if (!organization || !activeMember || !user) { notFound(); } const notificationChannels = await getOrganizationChannels(organization.id); const storageChannels = await getOrganizationStorageChannels(organization.id); const permissions = computeOrganizationPermissions(activeMember); const users = await db.query.user.findMany({ where: (fields) => isNull(fields.deletedAt), }); const organizationWithMembers = await db.query.organization.findFirst({ where: eq(drizzleDb.schemas.organization.id, organization.id), with: { members: { with: { user: true, }, }, }, }); if (!organizationWithMembers) notFound(); return (
Organization settings
{permissions.canManageSettings && organization.slug !== "default" && ( )}
{permissions.canManageDangerZone && organization.slug !== "default" && ( )}
); }