mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 02:55:58 +01:00 
			
		
		
		
	fix: #9670 return 4xx errors instead of 5xx on flag routes, when unauthenticated or not privileged [breaking]
This commit is contained in:
		| @@ -117,11 +117,7 @@ helpers.buildTerms = function (url, term, query) { | |||||||
| }; | }; | ||||||
|  |  | ||||||
| helpers.notAllowed = async function (req, res, error) { | helpers.notAllowed = async function (req, res, error) { | ||||||
| 	const data = await plugins.hooks.fire('filter:helpers.notAllowed', { | 	({ error } = await plugins.hooks.fire('filter:helpers.notAllowed', { req, res, error })); | ||||||
| 		req: req, |  | ||||||
| 		res: res, |  | ||||||
| 		error: error, |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	if (req.loggedIn || req.uid === -1) { | 	if (req.loggedIn || req.uid === -1) { | ||||||
| 		if (res.locals.isAPI) { | 		if (res.locals.isAPI) { | ||||||
| @@ -132,7 +128,7 @@ helpers.notAllowed = async function (req, res, error) { | |||||||
| 			res.status(403).render('403', { | 			res.status(403).render('403', { | ||||||
| 				path: req.path, | 				path: req.path, | ||||||
| 				loggedIn: req.loggedIn, | 				loggedIn: req.loggedIn, | ||||||
| 				error: data.error, | 				error, | ||||||
| 				title: '[[global:403.title]]', | 				title: '[[global:403.title]]', | ||||||
| 			}); | 			}); | ||||||
| 		} | 		} | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ modsController.flags.list = async function (req, res, next) { | |||||||
| 	let [,, { filters }] = results; | 	let [,, { filters }] = results; | ||||||
|  |  | ||||||
| 	if (!(isAdminOrGlobalMod || !!moderatedCids.length)) { | 	if (!(isAdminOrGlobalMod || !!moderatedCids.length)) { | ||||||
| 		return next(new Error('[[error:no-privileges]]')); | 		return helpers.notAllowed(req, res); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (!isAdminOrGlobalMod && moderatedCids.length) { | 	if (!isAdminOrGlobalMod && moderatedCids.length) { | ||||||
| @@ -113,10 +113,8 @@ modsController.flags.detail = async function (req, res, next) { | |||||||
| 	}); | 	}); | ||||||
| 	results.privileges = { ...results.privileges[0], ...results.privileges[1] }; | 	results.privileges = { ...results.privileges[0], ...results.privileges[1] }; | ||||||
|  |  | ||||||
| 	if (!results.flagData) { | 	if (!results.flagData || (!(results.isAdminOrGlobalMod || !!results.moderatedCids.length))) { | ||||||
| 		return next(new Error('[[error:invalid-data]]')); | 		return next();	// 404 | ||||||
| 	} else if (!(results.isAdminOrGlobalMod || !!results.moderatedCids.length)) { |  | ||||||
| 		return next(new Error('[[error:no-privileges]]')); |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if (results.flagData.type === 'user') { | 	if (results.flagData.type === 'user') { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user