Ocelot-Social/backend/src/middleware/softDelete/softDeleteMiddleware.js
mattwr18 698c85b262 fix(backend): Obfuscate avatar/image fix test
- Then Image.url can be non-nullable because we return null if the
  resource is deleted.
2020-03-23 19:16:10 +01:00

47 lines
1.2 KiB
JavaScript

const isModerator = ({ user }) => {
return user && (user.role === 'moderator' || user.role === 'admin')
}
const setDefaultFilters = (resolve, root, args, context, info) => {
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 = null
root.about = 'UNAVAILABLE'
root.name = 'UNAVAILABLE'
root.image = null
}
return resolve(root, args, context, info)
}
export default {
Query: {
Post: setDefaultFilters,
Comment: setDefaultFilters,
User: setDefaultFilters,
profilePagePosts: 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,
}