doxa-maps-cdn/server/api/auth/me.get.ts
2026-04-21 12:12:54 +01:00

30 lines
775 B
TypeScript

import { getUserPermissions } from '../../utils/rbac'
export default defineEventHandler(async (event) => {
const authUser = getAuthUser(event)
if (!authUser) {
throw createError({ statusCode: 401, statusMessage: 'Not authenticated' })
}
// Get fresh user data from database
const user = await db
.selectFrom('users')
.select(['id', 'email', 'display_name', 'avatar', 'verified', 'roles', 'created', 'updated'])
.where('id', '=', authUser.userId)
.executeTakeFirst()
if (!user) {
throw createError({ statusCode: 404, statusMessage: 'User not found' })
}
const permissions = await getUserPermissions(user.id)
return {
user: {
...user,
avatar: user.avatar || null,
permissions: [...permissions]
}
}
})