You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 04:11:42 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
const error            = require('../lib/error');
 | 
						|
const auditLogModel    = require('../models/audit-log');
 | 
						|
const {castJsonIfNeed} = require('../lib/helpers');
 | 
						|
 | 
						|
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)
 | 
						|
					.allowGraph('[user]');
 | 
						|
 | 
						|
				// Query is used for searching
 | 
						|
				if (typeof search_query === 'string' && search_query.length > 0) {
 | 
						|
					query.where(function () {
 | 
						|
						this.where(castJsonIfNeed('meta'), 'like', '%' + search_query + '%');
 | 
						|
					});
 | 
						|
				}
 | 
						|
 | 
						|
				if (typeof expand !== 'undefined' && expand !== null) {
 | 
						|
					query.withGraphFetched('[' + 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;
 |