|
|
import path from 'node:path'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function hasToString(o) { |
|
|
return o != null && typeof o.toString === 'function'; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
export function getFileNameValidationFunction(fieldName) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return function validateAvatarUrlMiddleware(req, res, next) { |
|
|
if (req.body && fieldName in req.body && (typeof req.body[fieldName] === 'string' || hasToString(req.body[fieldName]))) { |
|
|
const forbiddenRegExp = path.sep === '/' ? /[/\x00]/ : /[/\x00\\]/; |
|
|
if (forbiddenRegExp.test(req.body[fieldName])) { |
|
|
console.error('An error occurred while validating the request body', { |
|
|
handle: req.user.profile.handle, |
|
|
path: req.originalUrl, |
|
|
field: fieldName, |
|
|
value: req.body[fieldName], |
|
|
}); |
|
|
return res.sendStatus(400); |
|
|
} |
|
|
} |
|
|
|
|
|
next(); |
|
|
}; |
|
|
} |
|
|
|
|
|
const avatarUrlValidationFunction = getFileNameValidationFunction('avatar_url'); |
|
|
export default avatarUrlValidationFunction; |
|
|
|