You've already forked nginx-proxy-manager
							
							
				mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-10-30 18:05:34 +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;
 |