From cfdfdffd96766a15056985e1f3acdec0ddd27f24 Mon Sep 17 00:00:00 2001
From: AlexVOiceover <alex@alexvoiceover.com>
Date: Thu, 15 Aug 2024 16:11:54 +0100
Subject: [PATCH] Resintated users middleware

---
 .github/workflows/deployVercel.yml |  2 +-
 src/routes/users.ts                | 48 +++++++++++++++++-------------
 2 files changed, 29 insertions(+), 21 deletions(-)

diff --git a/.github/workflows/deployVercel.yml b/.github/workflows/deployVercel.yml
index 51d7911..f6fdc1c 100644
--- a/.github/workflows/deployVercel.yml
+++ b/.github/workflows/deployVercel.yml
@@ -2,7 +2,7 @@ name: Deploy to Vercel
 
 on:
   push:
-    branches: ['deployed']
+    branches: ['cleaning']
 
 
 jobs:
diff --git a/src/routes/users.ts b/src/routes/users.ts
index 2e20c27..860b22d 100644
--- a/src/routes/users.ts
+++ b/src/routes/users.ts
@@ -1,23 +1,31 @@
-import express from 'express';
-import supabase from '../supabaseClient';
+import express, { Request, Response, NextFunction } from 'express';
+//import supabase from '../supabaseClient';
+import supabaseAdmin from '../supabaseAdminClient';
 
 const router = express.Router();
 
+
+// Middleware to use the service role key for specific routes
+const serviceRoleMiddleware = (req: Request, res: Response, next: NextFunction) => {
+  (req as any).supabaseAdmin = supabaseAdmin;
+  next();
+};
+
 // Get all users
-router.get('/all', async (req, res) => {
+router.get('/all', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { data, error } = await supabase.from('users').select('*');
+    const { data, error } = await (req as any).supabaseAdmin.from('users').select('*');
     if (error) throw new Error(error.message);
     res.json(data);
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });
 
 // Get user by ID
-router.get('/id/:id', async (req, res) => {
+router.get('/id/:id', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { data, error } = await supabase
+    const { data, error } = await (req as any).supabaseAdmin
       .from('users')
       .select('*')
       .eq('id', req.params.id);
@@ -27,15 +35,15 @@ router.get('/id/:id', async (req, res) => {
     if (data.length > 1) return res.status(500).json({ error: 'Multiple users found with the same ID' });
 
     res.json(data[0]);
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });
 
 // Get user by email
-router.get('/email/:email', async (req, res) => {
+router.get('/email/:email', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { data, error } = await supabase
+    const { data, error } = await (req as any).supabaseAdmin
       .from('users')
       .select('*')
       .eq('email', req.params.email)
@@ -43,29 +51,29 @@ router.get('/email/:email', async (req, res) => {
     if (error) throw new Error(error.message);
     if (!data) return res.status(404).json({ error: 'User not found' });
     res.json(data);
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });
 
 // Create user
-router.post('/', async (req, res) => {
+router.post('/', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { data, error } = await supabase
+    const { data, error } = await (req as any).supabaseAdmin
       .from('users')
       .insert([req.body])
       .select();
     if (error) throw new Error(error.message);
     res.status(201).json(data[0]);
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });
 
 // Update user
-router.put('/:id', async (req, res) => {
+router.put('/:id', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { data, error } = await supabase
+    const { data, error } = await (req as any).supabaseAdmin
       .from('users')
       .update(req.body)
       .eq('id', req.params.id)
@@ -73,21 +81,21 @@ router.put('/:id', async (req, res) => {
     if (error) throw new Error(error.message);
     if (data.length === 0) return res.status(404).json({ error: 'User not found' });
     res.json(data[0]);
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });
 
 // Delete user
-router.delete('/:id', async (req, res) => {
+router.delete('/:id', serviceRoleMiddleware, async (req: Request, res: Response) => {
   try {
-    const { error } = await supabase
+    const { error } = await (req as any).supabaseAdmin
       .from('users')
       .delete()
       .eq('id', req.params.id);
     if (error) throw new Error(error.message);
     res.status(204).send();
-  } catch (error: unknown) {
+  } catch (error) {
     res.status(500).json({ error: error instanceof Error ? error.message : 'An unknown error occurred' });
   }
 });