Changeset View
Changeset View
Standalone View
Standalone View
lib/app/base-chips/access-strategy-types/and.js
Show All 10 Lines | |||||
module.exports = function(app) { | module.exports = function(app) { | ||||
const and = { | const and = { | ||||
name: "and", | name: "and", | ||||
getRestrictingQuery: async function(context, params) { | getRestrictingQuery: async function(context, params) { | ||||
const access_strategies = parse_params(app, params); | const access_strategies = parse_params(app, params); | ||||
const queries = await Promise.map(access_strategies, strategy => | const queries = await Promise.map(access_strategies, strategy => | ||||
strategy.getRestrictingQuery(context) | strategy.getRestrictingQuery(context) | ||||
); | ); | ||||
if (queries.some(query => query instanceof Query.DenyAll)) { | return new Query.And(...queries); | ||||
return new Query.DenyAll(); | |||||
} | |||||
const aggregated_pipeline = queries.reduce( | |||||
(acc, query) => acc.concat(query.toPipeline()), | |||||
[] | |||||
); | |||||
return Query.fromCustomPipeline(aggregated_pipeline); | |||||
}, | }, | ||||
item_sensitive: function(params) { | item_sensitive: function(params) { | ||||
const access_strategies = parse_params(app, params); | const access_strategies = parse_params(app, params); | ||||
return Promise.map(access_strategies, function(access_strategy) { | return Promise.map(access_strategies, function(access_strategy) { | ||||
return access_strategy.is_item_sensitive(); | return access_strategy.is_item_sensitive(); | ||||
}).reduce((a, b) => a || b); | }).reduce((a, b) => a || b); | ||||
kuba-orlik: Albo
```
return new Query.and(...queries)
```
;)
| |||||
}, | }, | ||||
checker_function: function(context, params, item) { | checker_function: function(context, params, item) { | ||||
return and.item_sensitive(params).then(function(item_sensitive) { | return and.item_sensitive(params).then(function(item_sensitive) { | ||||
if (item_sensitive && item === undefined) { | if (item_sensitive && item === undefined) { | ||||
return undefined; | return undefined; | ||||
} else { | } else { | ||||
const access_strategies = parse_params(app, params); | const access_strategies = parse_params(app, params); | ||||
const results = access_strategies.map(function(strategy) { | const results = access_strategies.map(function(strategy) { | ||||
Show All 10 Lines |
Albo
;)