diff --git a/.env.example b/.env.example
index 351a5f7..3b9f12d 100644
--- a/.env.example
+++ b/.env.example
@@ -18,4 +18,3 @@ NEXTAUTH_SECRET=""
API_RATE_LIMIT=2
NEXT_PUBLIC_IS_CLOUD=false
-NEXT_PUBLIC_SELF_HOSTED_ALLOW_NEW_USERS=false
\ No newline at end of file
diff --git a/apps/web/src/components/team/CreateTeam.tsx b/apps/web/src/components/team/CreateTeam.tsx
index 504a894..f28942c 100644
--- a/apps/web/src/components/team/CreateTeam.tsx
+++ b/apps/web/src/components/team/CreateTeam.tsx
@@ -17,6 +17,7 @@ import { Input } from "@unsend/ui/src/input";
import { Spinner } from "@unsend/ui/src/spinner";
import { api } from "~/trpc/react";
import { useRouter } from "next/navigation";
+import { toast } from "@unsend/ui/src/toaster";
const FormSchema = z.object({
name: z.string().min(2, {
@@ -43,6 +44,9 @@ export default function CreateTeam() {
utils.team.invalidate();
router.replace("/dashboard");
},
+ onError: (e) => {
+ toast.error(e.message);
+ },
});
}
diff --git a/apps/web/src/components/team/TeamCreationDisabled.tsx b/apps/web/src/components/team/TeamCreationDisabled.tsx
deleted file mode 100644
index a61d821..0000000
--- a/apps/web/src/components/team/TeamCreationDisabled.tsx
+++ /dev/null
@@ -1,19 +0,0 @@
-"use client";
-
-export default function TeamCreationDisabled() {
-
- return (
-
-
-
-
Cannot sign up
-
-
-
- Team creation is disabled. Please contact your administrator.
-
-
-
-
- );
-}
diff --git a/apps/web/src/env.js b/apps/web/src/env.js
index 59fd4b8..116538a 100644
--- a/apps/web/src/env.js
+++ b/apps/web/src/env.js
@@ -66,10 +66,6 @@ export const env = createEnv({
.string()
.default("false")
.transform((str) => str === "true"),
- NEXT_PUBLIC_SELF_HOSTED_ALLOW_NEW_USERS: z
- .string()
- .default("false")
- .transform((str) => str === "true"),
},
/**
@@ -91,8 +87,6 @@ export const env = createEnv({
AWS_DEFAULT_REGION: process.env.AWS_DEFAULT_REGION,
API_RATE_LIMIT: process.env.API_RATE_LIMIT,
NEXT_PUBLIC_IS_CLOUD: process.env.NEXT_PUBLIC_IS_CLOUD,
- NEXT_PUBLIC_SELF_HOSTED_ALLOW_NEW_USERS:
- process.env.NEXT_PUBLIC_SELF_HOSTED_ALLOW_NEW_USERS,
ADMIN_EMAIL: process.env.ADMIN_EMAIL,
DISCORD_WEBHOOK_URL: process.env.DISCORD_WEBHOOK_URL,
REDIS_URL: process.env.REDIS_URL,
diff --git a/apps/web/src/providers/dashboard-provider.tsx b/apps/web/src/providers/dashboard-provider.tsx
index 933fb70..00f93cd 100644
--- a/apps/web/src/providers/dashboard-provider.tsx
+++ b/apps/web/src/providers/dashboard-provider.tsx
@@ -4,7 +4,6 @@ import { useSession } from "next-auth/react";
import { FullScreenLoading } from "~/components/FullScreenLoading";
import { AddSesSettings } from "~/components/settings/AddSesSettings";
import CreateTeam from "~/components/team/CreateTeam";
-import TeamCreationDisabled from "~/components/team/TeamCreationDisabled";
import { env } from "~/env";
import { api } from "~/trpc/react";
@@ -27,14 +26,6 @@ export const DashboardProvider = ({
return ;
}
- if (
- !env.NEXT_PUBLIC_IS_CLOUD &&
- !env.NEXT_PUBLIC_SELF_HOSTED_ALLOW_NEW_USERS &&
- (!teams || teams.length === 0)
- ) {
- return ;
- }
-
if (
settings?.length === 0 &&
(!env.NEXT_PUBLIC_IS_CLOUD || session?.user.isAdmin)
diff --git a/apps/web/src/server/api/routers/team.ts b/apps/web/src/server/api/routers/team.ts
index 3c35e78..afcf4c6 100644
--- a/apps/web/src/server/api/routers/team.ts
+++ b/apps/web/src/server/api/routers/team.ts
@@ -1,4 +1,6 @@
+import { TRPCError } from "@trpc/server";
import { z } from "zod";
+import { env } from "~/env";
import { createTRPCRouter, protectedProcedure } from "~/server/api/trpc";
@@ -21,6 +23,16 @@ export const teamRouter = createTRPCRouter({
return;
}
+ if (!env.NEXT_PUBLIC_IS_CLOUD) {
+ const _team = await ctx.db.team.findFirst();
+ if (_team) {
+ throw new TRPCError({
+ message: "Can't have multiple teams in self hosted version",
+ code: "UNAUTHORIZED",
+ });
+ }
+ }
+
return ctx.db.team.create({
data: {
name: input.name,
diff --git a/turbo.json b/turbo.json
index 6cdea22..0b9bccf 100644
--- a/turbo.json
+++ b/turbo.json
@@ -37,7 +37,8 @@
"S3_COMPATIBLE_ACCESS_KEY",
"S3_COMPATIBLE_SECRET_KEY",
"S3_COMPATIBLE_API_URL",
- "S3_COMPATIBLE_PUBLIC_URL"
+ "S3_COMPATIBLE_PUBLIC_URL",
+ "ENABLE_PRISMA_CLIENT"
]
},
"lint": {