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 
			
		
		
		
	
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import errs from "../lib/error.js";
 | |
| import { castJsonIfNeed } from "../lib/helpers.js";
 | |
| import auditLogModel from "../models/audit-log.js";
 | |
| 
 | |
| 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(() => {
 | |
| 			const 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 errs.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 || {},
 | |
| 					}),
 | |
| 				);
 | |
| 			}
 | |
| 		});
 | |
| 	},
 | |
| };
 | |
| 
 | |
| export default internalAuditLog;
 |