From f4aa8f9661c9e629d0fd78f49de4c0a725b95c70 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 27 Jul 2023 11:43:45 -0700 Subject: [PATCH] Added different methods to get user websites and teams. --- pages/api/me/teams.ts | 15 ++++++++++++++ pages/api/me/websites.ts | 13 +++++------- pages/api/users/[id]/teams.ts | 34 ++++++++++++++++++++++++++++++++ pages/api/users/[id]/websites.ts | 1 - pages/api/websites/index.ts | 7 ++++--- 5 files changed, 58 insertions(+), 12 deletions(-) create mode 100644 pages/api/me/teams.ts create mode 100644 pages/api/users/[id]/teams.ts diff --git a/pages/api/me/teams.ts b/pages/api/me/teams.ts new file mode 100644 index 00000000..36699016 --- /dev/null +++ b/pages/api/me/teams.ts @@ -0,0 +1,15 @@ +import { useCors } from 'lib/middleware'; +import { NextApiRequestQueryBody } from 'lib/types'; +import { NextApiResponse } from 'next'; +import { methodNotAllowed } from 'next-basics'; +import userTeams from 'pages/api/users/[id]/teams'; + +export default async (req: NextApiRequestQueryBody, res: NextApiResponse) => { + await useCors(req, res); + + if (req.method === 'GET') { + return userTeams(req, res); + } + + return methodNotAllowed(res); +}; diff --git a/pages/api/me/websites.ts b/pages/api/me/websites.ts index dc9c0d62..29f1e431 100644 --- a/pages/api/me/websites.ts +++ b/pages/api/me/websites.ts @@ -1,21 +1,18 @@ import { useAuth, useCors } from 'lib/middleware'; import { NextApiRequestQueryBody } from 'lib/types'; import { NextApiResponse } from 'next'; -import { methodNotAllowed, ok } from 'next-basics'; -import { getUserWebsites } from 'queries'; +import { methodNotAllowed } from 'next-basics'; + +import userWebsites from 'pages/api/users/[id]/websites'; export default async (req: NextApiRequestQueryBody, res: NextApiResponse) => { await useCors(req, res); await useAuth(req, res); - const { - user: { id: userId }, - } = req.auth; - if (req.method === 'GET') { - const websites = await getUserWebsites(userId); + req.query.id = req.auth.user.id; - return ok(res, websites); + return userWebsites(req, res); } return methodNotAllowed(res); diff --git a/pages/api/users/[id]/teams.ts b/pages/api/users/[id]/teams.ts new file mode 100644 index 00000000..c31b98ca --- /dev/null +++ b/pages/api/users/[id]/teams.ts @@ -0,0 +1,34 @@ +import { useAuth, useCors } from 'lib/middleware'; +import { NextApiRequestQueryBody } from 'lib/types'; +import { NextApiResponse } from 'next'; +import { methodNotAllowed, ok, unauthorized } from 'next-basics'; +import { getUserTeams } from 'queries'; + +export interface UserWebsitesRequestBody { + name: string; + domain: string; + shareId: string; +} + +export default async ( + req: NextApiRequestQueryBody, + res: NextApiResponse, +) => { + await useCors(req, res); + await useAuth(req, res); + + const { user } = req.auth; + const { id: userId } = req.query; + + if (req.method === 'GET') { + if (!user.isAdmin && user.id !== userId) { + return unauthorized(res); + } + + const teams = await getUserTeams(userId); + + return ok(res, teams); + } + + return methodNotAllowed(res); +}; diff --git a/pages/api/users/[id]/websites.ts b/pages/api/users/[id]/websites.ts index de4a3a3a..e89908d2 100644 --- a/pages/api/users/[id]/websites.ts +++ b/pages/api/users/[id]/websites.ts @@ -16,7 +16,6 @@ export default async ( ) => { await useCors(req, res); await useAuth(req, res); - const { user } = req.auth; const { id: userId } = req.query; diff --git a/pages/api/websites/index.ts b/pages/api/websites/index.ts index 41556f8a..c806c7bb 100644 --- a/pages/api/websites/index.ts +++ b/pages/api/websites/index.ts @@ -4,7 +4,8 @@ import { useAuth, useCors } from 'lib/middleware'; import { NextApiRequestQueryBody } from 'lib/types'; import { NextApiResponse } from 'next'; import { methodNotAllowed, ok, unauthorized } from 'next-basics'; -import { createWebsite, getUserWebsites } from 'queries'; +import { createWebsite } from 'queries'; +import userWebsites from 'pages/api/users/[id]/websites'; export interface WebsitesRequestBody { name: string; @@ -24,9 +25,9 @@ export default async ( } = req.auth; if (req.method === 'GET') { - const websites = await getUserWebsites(userId); + req.query.id = userId; - return ok(res, websites); + return userWebsites(req, res); } if (req.method === 'POST') {