File tree Expand file tree Collapse file tree 3 files changed +9
-14
lines changed
Expand file tree Collapse file tree 3 files changed +9
-14
lines changed Original file line number Diff line number Diff line change 11<script setup lang="ts">
22import type { AllClubs } from ' @@/types/api/user/all_clubs'
3- import type { getRoleResponse } from ' ~~/utils/user-roles'
43import { useClerk , useUser } from ' vue-clerk'
5- import { isAdmin } from ' ~~/utils/user-roles'
64
75const { user } = useUser ()
86const config = useRuntimeConfig ()
@@ -23,11 +21,11 @@ const { data: clubs, suspense: __s1 } = useQuery<AllClubs>({
2321await __s1 ()
2422
2523const 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})
2927await __s2 ()
30- isUserAdmin .value = isAdmin ( roleData .value )
28+ isUserAdmin .value = roleData .value ?. success === true && roleData . value . role === ' ADMIN '
3129
3230if (clubs .value ) {
3331 useState (' isEnspireLoading' ).value = false
Original file line number Diff line number Diff line change 1- import { Roles } from '@prisma/client'
21import { until } from '@vueuse/core'
32import { useClerk , useClerkProvider } from 'vue-clerk'
4- import { getRole , isAdmin } from '~~/utils/user-roles'
3+ import { getRole } from '~~/utils/user-roles'
54
65export 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} )
Original file line number Diff line number Diff line change 1- import type { $Enums } from '@prisma/client'
21import { PrismaClient , Roles } from '@prisma/client'
32
4- const prisma = new PrismaClient ( )
5-
63export 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
You can’t perform that action at this time.
0 commit comments