File tree Expand file tree Collapse file tree 4 files changed +26
-23
lines changed Expand file tree Collapse file tree 4 files changed +26
-23
lines changed Original file line number Diff line number Diff line change 1- interface TeamMember {
2- login : string
3- }
4-
5- const getCoreMembers = cachedFunction ( async ( ) => {
6- return await $fetch < TeamMember [ ] > ( 'https://api.nuxt.com/teams/core' )
7- } , {
8- maxAge : 60 * 60 , // 1 hour
9- getKey : ( ) => 'core-members'
10- } )
11-
121export default defineOAuthGitHubEventHandler ( {
132 async onSuccess ( event , { user } ) {
14- const coreMembers = await getCoreMembers ( )
15- if ( ! coreMembers ) {
16- throw createError ( {
17- statusCode : 500 ,
18- statusMessage : 'Failed to fetch core team members.'
19- } )
20- }
21-
22- const userLogin = user . login . toLowerCase ( )
23- const coreTeamHasUser = coreMembers . some ( member => member . login . toLowerCase ( ) === userLogin )
3+ const adminMember = await isCoreTeamMember ( user . login . toLowerCase ( ) )
244
25- if ( ! coreTeamHasUser ) {
5+ if ( ! adminMember ) {
266 return sendRedirect ( event , '/admin/login?error=access-denied' )
277 }
288
Original file line number Diff line number Diff line change @@ -6,6 +6,8 @@ const deleteParamsSchema = z.object({
66} )
77
88export default defineEventHandler ( async ( event ) => {
9+ await requireUserSession ( event )
10+
911 const { id } = await getValidatedRouterParams ( event , deleteParamsSchema . parse )
1012
1113 const drizzle = useDrizzle ( )
Original file line number Diff line number Diff line change 1- export default defineEventHandler ( async ( ) => {
1+ export default defineEventHandler ( async ( event ) => {
2+ await requireUserSession ( event )
3+
24 const drizzle = useDrizzle ( )
35
46 return await drizzle . query . feedback . findMany ( )
Original file line number Diff line number Diff line change 1+ export const getCoreMembers = cachedFunction ( async ( ) => {
2+ return await $fetch < {
3+ login : string
4+ } [ ] > ( 'https://api.nuxt.com/teams/core' )
5+ } , {
6+ maxAge : 60 * 60 , // 1 hour
7+ getKey : ( ) => 'core-members'
8+ } )
9+
10+ export async function isCoreTeamMember ( login : string ) {
11+ const coreMembers = await getCoreMembers ( )
12+ if ( ! coreMembers ) {
13+ throw createError ( {
14+ statusCode : 500 ,
15+ statusMessage : 'Failed to fetch core team members.'
16+ } )
17+ }
18+ return coreMembers . some ( member => member . login . toLowerCase ( ) === login )
19+ }
You can’t perform that action at this time.
0 commit comments