Ocelot-Social/backend/src/middleware/softDeleteMiddleware.js
roschaefer 2a544376a3 Delete post.image
In contrast to the other errors, it's better to send `null` for an
image. That way, the browser won't even try to load that url.
2019-09-03 23:19:55 +02:00

48 lines
1.3 KiB
JavaScript

const isModerator = ({ user }) => {
return user && (user.role === 'moderator' || user.role === 'admin')
}
const setDefaultFilters = (resolve, root, args, context, info) => {
if (typeof args.deleted !== 'boolean') {
args.deleted = false
}
if (!isModerator(context)) {
args.disabled = false
}
return resolve(root, args, context, info)
}
const obfuscate = async (resolve, root, args, context, info) => {
if (root.deleted || (!isModerator(context) && root.disabled)) {
root.content = 'UNAVAILABLE'
root.contentExcerpt = 'UNAVAILABLE'
root.title = 'UNAVAILABLE'
root.slug = 'UNAVAILABLE'
root.avatar = 'UNAVAILABLE'
root.about = 'UNAVAILABLE'
root.name = 'UNAVAILABLE'
root.image = null // avoid unecessary 500 errors
}
return resolve(root, args, context, info)
}
export default {
Query: {
Post: setDefaultFilters,
Comment: setDefaultFilters,
User: setDefaultFilters,
},
Mutation: async (resolve, root, args, context, info) => {
args.disabled = false
// TODO: remove as soon as our factories don't need this anymore
if (typeof args.deleted !== 'boolean') {
args.deleted = false
}
return resolve(root, args, context, info)
},
Post: obfuscate,
User: obfuscate,
Comment: obfuscate,
}