Как синхронизировать пользователей клерков с Prisma Orm в приложении React?Javascript

Форум по Javascript
Ответить
Anonymous
 Как синхронизировать пользователей клерков с Prisma Orm в приложении React?

Сообщение Anonymous »

Я строю приложение React, которое использует клерка для аутентификации и Prisma Orm для управления пользователями в моей базе данных. Я хочу убедиться, что пользователи в клерке автоматически синхронизированы с моей базой данных, когда они: < /p>

Код: Выделить всё

Created (user.created)
Updated (user.updated)
Deleted (user.deleted)
Текущая настройка:
Я внедрил веб -крюк в своем бэкэнд для обработки событий user.created и хранить новых пользователей в Prisma:

Код: Выделить всё

/* eslint-disable no-undef */
import express from 'express';
import { Webhook } from 'svix';
import dotenv from 'dotenv';
import cors from 'cors';
import bodyParser from 'body-parser';
import { PrismaClient } from '@prisma/client';

dotenv.config();

const app = express();
const prisma = new PrismaClient();
const PORT = process.env.PORT || 3000;

app.use(cors());
app.use(bodyParser.json());

const WEBHOOK_SECRET = process.env.CLERK_WEBHOOK_SECRET;

if (!WEBHOOK_SECRET) {
console.error('Missing Clerk Webhook Secret!');
process.exit(1);
}

app.post('/webhook/clerk', async (req, res) => {
const svix_id = req.headers['svix-id'];
const svix_timestamp = req.headers['svix-timestamp'];
const svix_signature = req.headers['svix-signature'];

if (!svix_id || !svix_timestamp || !svix_signature) {
return res.status(400).json({ error: 'Missing Svix headers' });
}

const payload = req.body;
const body = JSON.stringify(payload);

try {
const wh = new Webhook(WEBHOOK_SECRET);
const evt = wh.verify(body, {
'svix-id': svix_id,
'svix-timestamp': svix_timestamp,
'svix-signature': svix_signature
});

if (evt.type === 'user.created') {
const { id, email_addresses, first_name, last_name, image_url } = evt.data;

if (!id || !email_addresses || email_addresses.length === 0) {
return res.status(400).json({ error: 'Invalid user data' });
}

await prisma.user.create({
data: {
clerkUserId: id,
email: email_addresses[0].email_address,
firstName: first_name || null,
lastName: last_name || null,
imageUrl: image_url || null
}
});

console.log(`User ${id} created.`);
}

res.status(200).json({ success: true });
} catch (error) {
console.error('Error processing webhook:', error);
res.status(400).json({ error: 'Webhook verification failed' });
}
});

app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});
Я попытался подключить веб-хук клерка к моему нанесению с использованием ngrok, как это упоминалось в документации: https://clerk.com/docs/webhooks/sync-data
Я настроил Конечная точка на приборной панели клерка, но все еще была ошибка.
Я получил 403 (запрещено) от туннеля Ngrok. В документации клерка я не нашел никакого Giude для установки React.

Подробнее здесь: https://stackoverflow.com/questions/794 ... pplication
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»