diff --git a/src/app/(main)/websites/Websites.tsx b/src/app/(main)/websites/Websites.tsx
new file mode 100644
index 00000000..8769d6ad
--- /dev/null
+++ b/src/app/(main)/websites/Websites.tsx
@@ -0,0 +1,8 @@
+'use client';
+import WebsitesDataTable from '../settings/websites/WebsitesDataTable';
+
+export function Websites({ teamId, userId }: { teamId: string; userId: string }) {
+ return ;
+}
+
+export default Websites;
diff --git a/src/app/(main)/websites/WebsitesBrowse.tsx b/src/app/(main)/websites/WebsitesBrowse.tsx
deleted file mode 100644
index 88fa9e5e..00000000
--- a/src/app/(main)/websites/WebsitesBrowse.tsx
+++ /dev/null
@@ -1,12 +0,0 @@
-'use client';
-import WebsitesDataTable from '../settings/websites/WebsitesDataTable';
-import { useLogin } from 'components/hooks';
-
-export function WebsitesBrowse({ teamId, userId }: { teamId: string; userId: string }) {
- const { user } = useLogin();
- const allowEdit = !process.env.cloudMode;
-
- return ;
-}
-
-export default WebsitesBrowse;
diff --git a/src/app/(main)/websites/page.tsx b/src/app/(main)/websites/page.tsx
index 3062bbba..4f4d5e24 100644
--- a/src/app/(main)/websites/page.tsx
+++ b/src/app/(main)/websites/page.tsx
@@ -1,12 +1,12 @@
import WebsitesHeader from 'app/(main)/settings/websites/WebsitesHeader';
-import WebsitesBrowse from './WebsitesBrowse';
+import Websites from './Websites';
import { Metadata } from 'next';
export default function WebsitesPage({ params: { teamId, userId } }) {
return (
<>
-
-
+
+
>
);
}
diff --git a/src/pages/api/scripts/telemetry.js b/src/pages/api/scripts/telemetry.ts
similarity index 83%
rename from src/pages/api/scripts/telemetry.js
rename to src/pages/api/scripts/telemetry.ts
index 6a249de0..bc0fd503 100644
--- a/src/pages/api/scripts/telemetry.js
+++ b/src/pages/api/scripts/telemetry.ts
@@ -1,7 +1,8 @@
import { ok } from 'next-basics';
import { CURRENT_VERSION, TELEMETRY_PIXEL } from 'lib/constants';
+import { NextApiRequest, NextApiResponse } from 'next';
-export default function handler(req, res) {
+export default function handler(req: NextApiRequest, res: NextApiResponse) {
if (process.env.NODE_ENV === 'production') {
res.setHeader('content-type', 'text/javascript');
diff --git a/src/pages/api/teams/[teamId]/websites/index.ts b/src/pages/api/teams/[teamId]/websites/index.ts
index 2f6fe325..fa3afe23 100644
--- a/src/pages/api/teams/[teamId]/websites/index.ts
+++ b/src/pages/api/teams/[teamId]/websites/index.ts
@@ -1,12 +1,11 @@
import * as yup from 'yup';
-import { canCreateTeamWebsite, canViewTeam } from 'lib/auth';
+import { canViewTeam } from 'lib/auth';
import { useAuth, useValidate } from 'lib/middleware';
import { NextApiRequestQueryBody, SearchFilter } from 'lib/types';
import { pageInfo } from 'lib/schema';
import { NextApiResponse } from 'next';
-import { methodNotAllowed, ok, unauthorized } from 'next-basics';
-import { createWebsite, getTeamWebsites } from 'queries';
-import { uuid } from 'lib/crypto';
+import { ok, unauthorized } from 'next-basics';
+import { getTeamWebsites } from 'queries';
export interface TeamWebsiteRequestQuery extends SearchFilter {
teamId: string;
@@ -54,18 +53,4 @@ export default async (
return ok(res, websites);
}
-
- if (req.method === 'POST') {
- if (!(await canCreateTeamWebsite(req.auth, teamId))) {
- return unauthorized(res);
- }
-
- const { name, domain, shareId } = req.body;
-
- const website = await createWebsite({ id: uuid(), name, domain, shareId });
-
- return ok(res, website);
- }
-
- return methodNotAllowed(res);
};
diff --git a/src/pages/api/websites/index.ts b/src/pages/api/websites/index.ts
index 9aabad65..686c4823 100644
--- a/src/pages/api/websites/index.ts
+++ b/src/pages/api/websites/index.ts
@@ -1,4 +1,4 @@
-import { canCreateWebsite } from 'lib/auth';
+import { canCreateTeamWebsite, canCreateWebsite } from 'lib/auth';
import { uuid } from 'lib/crypto';
import { useAuth, useCors, useValidate } from 'lib/middleware';
import { NextApiRequestQueryBody, SearchFilter } from 'lib/types';
@@ -15,6 +15,7 @@ export interface WebsitesRequestBody {
name: string;
domain: string;
shareId: string;
+ teamId: string;
}
const schema = {
@@ -25,6 +26,7 @@ const schema = {
name: yup.string().max(100).required(),
domain: yup.string().max(500).required(),
shareId: yup.string().max(50).nullable(),
+ teamId: yup.string().nullable(),
}),
};
@@ -49,9 +51,12 @@ export default async (
}
if (req.method === 'POST') {
- const { name, domain, shareId } = req.body;
+ const { name, domain, shareId, teamId } = req.body;
- if (!(await canCreateWebsite(req.auth))) {
+ if (
+ (teamId && !(await canCreateTeamWebsite(req.auth, teamId))) ||
+ !(await canCreateWebsite(req.auth))
+ ) {
return unauthorized(res);
}
@@ -60,9 +65,12 @@ export default async (
name,
domain,
shareId,
+ teamId,
};
- data.userId = userId;
+ if (!teamId) {
+ data.userId = userId;
+ }
const website = await createWebsite(data);
diff --git a/src/queries/admin/website.ts b/src/queries/admin/website.ts
index ab63d255..246ac2d0 100644
--- a/src/queries/admin/website.ts
+++ b/src/queries/admin/website.ts
@@ -109,7 +109,7 @@ export async function createWebsite(
.create({
data,
})
- .then(async data => {
+ .then(async (data: { id: any }) => {
if (cache.enabled) {
await cache.storeWebsite(data);
}
diff --git a/src/queries/index.js b/src/queries/index.ts
similarity index 100%
rename from src/queries/index.js
rename to src/queries/index.ts