Skip to content

Commit e1ae1eb

Browse files
authored
fix: removed prisma usage in middleware (#687)
* fix: removed prisma usage in middleware * fix: removed potentially prisma-calling code
1 parent f938b6c commit e1ae1eb

File tree

3 files changed

+9
-14
lines changed

3 files changed

+9
-14
lines changed

app/components/custom/sidebar.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
<script setup lang="ts">
22
import type { AllClubs } from '@@/types/api/user/all_clubs'
3-
import type { getRoleResponse } from '~~/utils/user-roles'
43
import { useClerk, useUser } from 'vue-clerk'
5-
import { isAdmin } from '~~/utils/user-roles'
64
75
const { user } = useUser()
86
const config = useRuntimeConfig()
@@ -23,11 +21,11 @@ const { data: clubs, suspense: __s1 } = useQuery<AllClubs>({
2321
await __s1()
2422
2523
const isUserAdmin = ref(false)
26-
const { data: roleData, suspense: __s2 } = useQuery<getRoleResponse>({
24+
const { data: roleData, suspense: __s2 } = useQuery<any>({
2725
queryKey: ['/api/user/check-role'],
2826
})
2927
await __s2()
30-
isUserAdmin.value = isAdmin(roleData.value)
28+
isUserAdmin.value = roleData.value?.success === true && roleData.value.role === 'ADMIN'
3129
3230
if (clubs.value) {
3331
useState('isEnspireLoading').value = false

app/middleware/admin.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { Roles } from '@prisma/client'
21
import { until } from '@vueuse/core'
32
import { useClerk, useClerkProvider } from 'vue-clerk'
4-
import { getRole, isAdmin } from '~~/utils/user-roles'
3+
import { getRole } from '~~/utils/user-roles'
54

65
export default defineNuxtRouteMiddleware(async () => {
76
// Modified from auth.ts
@@ -18,7 +17,7 @@ export default defineNuxtRouteMiddleware(async () => {
1817
if (clerk.loaded && clerk.user?.id == null)
1918
return navigateTo('/sign-in')
2019
const response = await $fetch('/api/user/check-role')
21-
if (!isAdmin(response))
20+
if (!(response?.success === true && response.role === 'ADMIN'))
2221
return abortNavigation()
2322
}
2423

@@ -27,7 +26,7 @@ export default defineNuxtRouteMiddleware(async () => {
2726
if (id == null)
2827
return navigateTo('/sign-in')
2928
const response = await getRole(id)
30-
if (!isAdmin(response))
29+
if (!(response?.success === true && response.role === 'ADMIN'))
3130
return abortNavigation()
3231
}
3332
})

utils/user-roles.ts

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
import type { $Enums } from '@prisma/client'
21
import { PrismaClient, Roles } from '@prisma/client'
32

4-
const prisma = new PrismaClient()
5-
63
export interface getRoleResponse {
74
success: boolean
8-
role: $Enums.Roles | null
5+
role: string | null
96
error?: string
107
}
118

12-
export async function getRole(clerkId: string) {
9+
export async function getRole(clerkId: string): Promise<getRoleResponse> {
1310
try {
11+
const prisma = new PrismaClient()
1412
const user = await prisma.user.findFirstOrThrow({
1513
where: {
1614
clerkUserId: clerkId,
@@ -30,7 +28,7 @@ export async function getRole(clerkId: string) {
3028
}
3129
}
3230

33-
export function isRole(roleData: getRoleResponse | undefined, theRole: $Enums.Roles) {
31+
export function isRole(roleData: getRoleResponse | undefined, theRole: string) {
3432
return roleData?.success === true && roleData.role === theRole
3533
}
3634

0 commit comments

Comments
 (0)