manual check in/check out

implemented, to be implemented: qrcode or/and geofence
This commit is contained in:
dimitar committed 2025-11-19 02:23:39 +01:00
1 parent 33a698066f
commit 39021dca35
18 files changed
+650 -72

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
import { currentUser } from '@clerk/nextjs/server'
import { IDatabase } from './database/types'
export async function ensureUserSynced(userId: string, db: IDatabase) {
const existingUser = await db.getUserById(userId)
if (existingUser) return existingUser
console.log('User not found in DB, syncing from Clerk:', userId)
const clerkUser = await currentUser()
if (!clerkUser || clerkUser.id !== userId) {
throw new Error('Could not fetch Clerk user details')
}
const email = clerkUser.emailAddresses[0]?.emailAddress
if (!email) throw new Error('User has no email')
const user = await db.createUser({
id: userId,
email,
firstName: clerkUser.firstName || '',
lastName: clerkUser.lastName || '',
password: '', // Managed by Clerk
phone: clerkUser.phoneNumbers[0]?.phoneNumber || undefined,
role: (clerkUser.publicMetadata.role as 'admin' | 'client') || 'client'
})
return user
}