Unverified Commit 1c4829f7 authored by Regev Brody's avatar Regev Brody Committed by GitHub

fix: tags filtered by access (#2100)

parent 41327dd1
...@@ -171,26 +171,51 @@ module.exports = { ...@@ -171,26 +171,51 @@ module.exports = {
* FETCH TAGS * FETCH TAGS
*/ */
async tags (obj, args, context, info) { async tags (obj, args, context, info) {
return WIKI.models.tags.query().orderBy('tag', 'asc') const pages = await WIKI.models.pages.query().column([
'path',
{ locale: 'localeCode' },
])
.withGraphJoined('tags')
const allTags = _.filter(pages, r => {
return WIKI.auth.checkAccess(context.req.user, ['read:pages'], {
path: r.path,
locale: r.locale
})
})
.flatMap(r => r.tags)
return _.orderBy(_.uniqBy(allTags, 'id'), ['tag'], ['asc'])
}, },
/** /**
* SEARCH TAGS * SEARCH TAGS
*/ */
async searchTags (obj, args, context, info) { async searchTags (obj, args, context, info) {
const query = _.trim(args.query) const query = _.trim(args.query)
const results = await WIKI.models.tags.query() const pages = await WIKI.models.pages.query().column([
.column('tag') 'path',
.where(builder => { { locale: 'localeCode' },
builder.andWhere(builderSub => { ])
.withGraphJoined('tags')
.modifyGraph('tags', builder => {
builder.select('tag')
})
.modify(queryBuilder => {
queryBuilder.andWhere(builderSub => {
if (WIKI.config.db.type === 'postgres') { if (WIKI.config.db.type === 'postgres') {
builderSub.where('tag', 'ILIKE', `%${query}%`) builderSub.where('tags.tag', 'ILIKE', `%${query}%`)
} else { } else {
builderSub.where('tag', 'LIKE', `%${query}%`) builderSub.where('tags.tag', 'LIKE', `%${query}%`)
} }
}) })
}) })
.limit(5) const allTags = _.filter(pages, r => {
return results.map(r => r.tag) return WIKI.auth.checkAccess(context.req.user, ['read:pages'], {
path: r.path,
locale: r.locale
})
})
.flatMap(r => r.tags)
.map(t => t.tag)
return _.uniq(allTags).slice(0, 5)
}, },
/** /**
* FETCH PAGE TREE * FETCH PAGE TREE
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment