Access lists

This commit is contained in:
Jamie Curnow
2018-08-19 18:54:17 +10:00
parent 13f08df46c
commit 7d9e716c7c
8 changed files with 38 additions and 29 deletions

View File

@ -128,7 +128,7 @@ const internalAccessList = {
.then(row => {
if (row) {
if (typeof row.items !== 'undefined' && row.items) {
row.items = internalAccessList.maskItems(row.items);
row = internalAccessList.maskItems(row);
}
return _.omit(row, omissions());
@ -180,11 +180,14 @@ const internalAccessList = {
.then(access_data => {
let query = accessListModel
.query()
.where('is_deleted', 0)
.groupBy('id')
.omit(['is_deleted'])
.select('access_list.*', accessListModel.raw('COUNT(proxy_hosts.id) as proxy_host_count'), accessListModel.raw('COUNT(items.id) as item_count'))
.leftJoinRelation('proxy_hosts')
.leftJoinRelation('items')
.where('access_list.is_deleted', 0)
.groupBy('access_list.id')
.omit(['access_list.is_deleted'])
.allowEager('[owner,items]')
.orderBy('name', 'ASC');
.orderBy('access_list.name', 'ASC');
if (access_data.permission_visibility !== 'all') {
query.andWhere('owner_user_id', access.token.get('attrs').id);
@ -207,7 +210,7 @@ const internalAccessList = {
if (rows) {
rows.map(function (row, idx) {
if (typeof row.items !== 'undefined' && row.items) {
rows[idx].items = internalAccessList.maskItems(row.items);
rows[idx] = internalAccessList.maskItems(row);
}
});
}

View File

@ -33,6 +33,8 @@ class AccessList extends Model {
}
static get relationMappings () {
const ProxyHost = require('./proxy_host');
return {
owner: {
relation: Model.HasOneRelation,
@ -56,6 +58,18 @@ class AccessList extends Model {
modify: function (qb) {
qb.omit(['id', 'created_on', 'modified_on']);
}
},
proxy_hosts: {
relation: Model.HasManyRelation,
modelClass: ProxyHost,
join: {
from: 'access_list.id',
to: 'proxy_host.access_list_id'
},
modify: function (qb) {
qb.where('proxy_host.is_deleted', 0);
qb.omit(['id', 'created_on', 'modified_on', 'is_deleted', 'meta']);
}
}
};
}