Skip to content

Commit

Permalink
Resintated users middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
AlexVOiceover committed Aug 15, 2024
1 parent 928388b commit cfdfdff
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 21 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/deployVercel.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Deploy to Vercel

on:
push:
branches: ['deployed']
branches: ['cleaning']


jobs:
Expand Down
48 changes: 28 additions & 20 deletions src/routes/users.ts
Original file line number Diff line number Diff line change
@@ -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);
Expand All @@ -27,67 +35,67 @@ 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)
.single();
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)
.select();
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' });
}
});
Expand Down

0 comments on commit cfdfdff

Please sign in to comment.