| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- const error         = require('../lib/error');
 
- const auditLogModel = require('../models/audit-log');
 
- const internalAuditLog = {
 
- 	/**
 
- 	 * All logs
 
- 	 *
 
- 	 * @param   {Access}  access
 
- 	 * @param   {Array}   [expand]
 
- 	 * @param   {String}  [search_query]
 
- 	 * @returns {Promise}
 
- 	 */
 
- 	getAll: (access, expand, search_query) => {
 
- 		return access.can('auditlog:list')
 
- 			.then(() => {
 
- 				let query = auditLogModel
 
- 					.query()
 
- 					.orderBy('created_on', 'DESC')
 
- 					.orderBy('id', 'DESC')
 
- 					.limit(100)
 
- 					.allowEager('[user]');
 
- 				// Query is used for searching
 
- 				if (typeof search_query === 'string') {
 
- 					query.where(function () {
 
- 						this.where('meta', 'like', '%' + search_query + '%');
 
- 					});
 
- 				}
 
- 				if (typeof expand !== 'undefined' && expand !== null) {
 
- 					query.eager('[' + expand.join(', ') + ']');
 
- 				}
 
- 				return query;
 
- 			});
 
- 	},
 
- 	/**
 
- 	 * This method should not be publicly used, it doesn't check certain things. It will be assumed
 
- 	 * that permission to add to audit log is already considered, however the access token is used for
 
- 	 * default user id determination.
 
- 	 *
 
- 	 * @param   {Access}   access
 
- 	 * @param   {Object}   data
 
- 	 * @param   {String}   data.action
 
- 	 * @param   {Number}   [data.user_id]
 
- 	 * @param   {Number}   [data.object_id]
 
- 	 * @param   {Number}   [data.object_type]
 
- 	 * @param   {Object}   [data.meta]
 
- 	 * @returns {Promise}
 
- 	 */
 
- 	add: (access, data) => {
 
- 		return new Promise((resolve, reject) => {
 
- 			// Default the user id
 
- 			if (typeof data.user_id === 'undefined' || !data.user_id) {
 
- 				data.user_id = access.token.getUserId(1);
 
- 			}
 
- 			if (typeof data.action === 'undefined' || !data.action) {
 
- 				reject(new error.InternalValidationError('Audit log entry must contain an Action'));
 
- 			} else {
 
- 				// Make sure at least 1 of the IDs are set and action
 
- 				resolve(auditLogModel
 
- 					.query()
 
- 					.insert({
 
- 						user_id:     data.user_id,
 
- 						action:      data.action,
 
- 						object_type: data.object_type || '',
 
- 						object_id:   data.object_id || 0,
 
- 						meta:        data.meta || {}
 
- 					}));
 
- 			}
 
- 		});
 
- 	}
 
- };
 
- module.exports = internalAuditLog;
 
 
  |