-
- All visitors
+
+ Visitor Management
-
- See all your visitors in one place.
+
+ Manage and monitor all your visitors
-
-
-
-
-
+
+
+
+
+
+
+ All Visitors
+
+
+
+ Allow Lists/Groups
+
+ {/*
+
+ Access Requests
+ */}
+
+
+
+
+
+
+
+
+ All visitors
+
+ See all your visitors in one place.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Groups of Allowed Emails and Domains
+
+
+
+ Pre-defined lists of emails and domains that are allowed
+ to access your documents and datarooms.
+
+
+
+
+
+
+
+
+
+
+
+ {allowListPagination && allowListGroups && (
+
+ )}
+
+
+
+ {/*
+
+
+ Access Requests
+ Review and manage pending visitor access requests.
+
+
+
+ */}
+
-
-
-
-
-
-
);
-}
\ No newline at end of file
+}
diff --git a/prisma/migrations/20250716200424_added_allow_list_groups/migration.sql b/prisma/migrations/20250716200424_added_allow_list_groups/migration.sql
new file mode 100644
index 000000000..9ae299223
--- /dev/null
+++ b/prisma/migrations/20250716200424_added_allow_list_groups/migration.sql
@@ -0,0 +1,32 @@
+-- AlterTable
+ALTER TABLE "Link" ADD COLUMN "allowListGroupId" TEXT;
+
+-- AlterTable
+ALTER TABLE "LinkPreset" ADD COLUMN "allowListGroupId" TEXT;
+
+-- CreateTable
+CREATE TABLE "AllowListGroup" (
+ "id" TEXT NOT NULL,
+ "name" TEXT NOT NULL,
+ "allowList" TEXT[],
+ "teamId" TEXT NOT NULL,
+ "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
+ "updatedAt" TIMESTAMP(3) NOT NULL,
+
+ CONSTRAINT "AllowListGroup_pkey" PRIMARY KEY ("id")
+);
+
+-- CreateIndex
+CREATE INDEX "AllowListGroup_teamId_idx" ON "AllowListGroup"("teamId");
+
+-- CreateIndex
+CREATE UNIQUE INDEX "AllowListGroup_teamId_name_key" ON "AllowListGroup"("teamId", "name");
+
+-- AddForeignKey
+ALTER TABLE "Link" ADD CONSTRAINT "Link_allowListGroupId_fkey" FOREIGN KEY ("allowListGroupId") REFERENCES "AllowListGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "LinkPreset" ADD CONSTRAINT "LinkPreset_allowListGroupId_fkey" FOREIGN KEY ("allowListGroupId") REFERENCES "AllowListGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE;
+
+-- AddForeignKey
+ALTER TABLE "AllowListGroup" ADD CONSTRAINT "AllowListGroup_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "Team"("id") ON DELETE CASCADE ON UPDATE CASCADE;
diff --git a/prisma/schema/link.prisma b/prisma/schema/link.prisma
index b41385887..35a595aec 100644
--- a/prisma/schema/link.prisma
+++ b/prisma/schema/link.prisma
@@ -79,6 +79,9 @@ model Link {
customFields CustomField[]
tags TagItem[]
+
+ allowListGroupId String?
+ allowListGroup AllowListGroup? @relation(fields: [allowListGroupId], references: [id], onDelete: SetNull)
@@unique([domainSlug, slug])
@@index([documentId])
@@ -104,6 +107,8 @@ model LinkPreset {
allowDownload Boolean? @default(false)
enableAllowList Boolean? @default(false)
allowList String[]
+ allowListGroupId String?
+ allowListGroup AllowListGroup? @relation(fields: [allowListGroupId], references: [id], onDelete: SetNull)
enableDenyList Boolean? @default(false)
denyList String[]
expiresIn Int? // how many days from link creation until it expires in seconds
diff --git a/prisma/schema/schema.prisma b/prisma/schema/schema.prisma
index ee594ee78..7d800dd90 100644
--- a/prisma/schema/schema.prisma
+++ b/prisma/schema/schema.prisma
@@ -111,8 +111,25 @@ model Team {
ignoredDomains String[] // Domains that are ignored for the team
globalBlockList String[]
+ allowListGroups AllowListGroup[]
}
+model AllowListGroup {
+ id String @id @default(cuid())
+ name String
+ allowList String[]
+ teamId String
+ team Team @relation(fields: [teamId], references: [id], onDelete: Cascade)
+
+ links Link[]
+ presets LinkPreset[]
+
+ createdAt DateTime @default(now())
+ updatedAt DateTime @updatedAt
+
+ @@unique([teamId, name])
+ @@index([teamId])
+}
model Brand {
id String @id @default(cuid())