add post access filter for all post queries

This commit is contained in:
Moriz Wahl 2022-09-20 20:20:55 +02:00
parent f331813572
commit 0c32fd8023
2 changed files with 24 additions and 1 deletions

View File

@ -17,19 +17,42 @@ const maintainPinnedPosts = (params) => {
return params
}
const postAccessFilter = (params) => {
const groupFilter = {
group: {
OR: [{ groupType_in: 'public' }, { myRole_in: ['usual', 'admin', 'owner'] }],
},
}
if (isEmpty(params.filter)) {
params.filter = { OR: [groupFilter, {}] }
} else {
if (isEmpty(params.filter.group)) {
params.filter = { OR: [groupFilter, { ...params.filter }] }
} else {
params.filter.group = {
AND: [{ ...groupFilter.group }, { ...params.filter.group }],
}
}
}
return params
}
export default {
Query: {
Post: async (object, params, context, resolveInfo) => {
params = await filterForMutedUsers(params, context)
params = await maintainPinnedPosts(params)
params = await postAccessFilter(params)
return neo4jgraphql(object, params, context, resolveInfo)
},
findPosts: async (object, params, context, resolveInfo) => {
params = await filterForMutedUsers(params, context)
params = await postAccessFilter(params)
return neo4jgraphql(object, params, context, resolveInfo)
},
profilePagePosts: async (object, params, context, resolveInfo) => {
params = await filterForMutedUsers(params, context)
params = await postAccessFilter(params)
return neo4jgraphql(object, params, context, resolveInfo)
},
PostsEmotionsCountByEmotion: async (object, params, context, resolveInfo) => {

View File

@ -81,7 +81,7 @@ input _PostFilter {
emotions_none: _PostEMOTEDFilter
emotions_single: _PostEMOTEDFilter
emotions_every: _PostEMOTEDFilter
group: ID
group: _GroupFilter
}
enum _PostOrdering {