fix(middleware): critical security loophole
ensure that not logged in users can't access restricted stories via the api or regular pages
This commit is contained in:
		
							parent
							
								
									b2c99726bc
								
							
						
					
					
						commit
						e5af6fd827
					
				| @ -14,6 +14,9 @@ export const storyMiddleware = defineNuxtRouteMiddleware(async (to, from) => { | |||||||
| 	console.log("to n from", to, from, data); | 	console.log("to n from", to, from, data); | ||||||
| 	const { data: story, error } = await useApiFetch<SingleChapterResult>(to.path); | 	const { data: story, error } = await useApiFetch<SingleChapterResult>(to.path); | ||||||
| 	if (error.value) { | 	if (error.value) { | ||||||
|  | 		if (error.value.message.toLocaleLowerCase() == "unauthenticated") { | ||||||
|  | 			return navigateTo("/auth/login"); | ||||||
|  | 		} | ||||||
| 		return showError(error.value); | 		return showError(error.value); | ||||||
| 	} else if (!story.value) { | 	} else if (!story.value) { | ||||||
| 		return showError({ statusCode: 404, message: messages[404] }); | 		return showError({ statusCode: 404, message: messages[404] }); | ||||||
|  | |||||||
| @ -47,6 +47,9 @@ export async function storyCheck(event: H3Event<EventHandlerRequest>, story: ISt | |||||||
| 	} else if (story.chapters[idx]?.hidden && event.context.currentUser?._id !== (story.author as IUser)._id && !event.context.currentUser?.profile.isAdmin) { | 	} else if (story.chapters[idx]?.hidden && event.context.currentUser?._id !== (story.author as IUser)._id && !event.context.currentUser?.profile.isAdmin) { | ||||||
| 		ret.statusCode = 403; | 		ret.statusCode = 403; | ||||||
| 		ret.message = messages[403]; | 		ret.message = messages[403]; | ||||||
|  | 	} else if (story.chapters[idx]?.loggedInOnly && !event.context.currentUser) { | ||||||
|  | 		ret.statusCode = 403; | ||||||
|  | 		ret.message = messages[403]; | ||||||
| 	} | 	} | ||||||
| 	return !!Object.keys(ret).length ? ret : null; | 	return !!Object.keys(ret).length ? ret : null; | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user