1.0.1 • Published 2 years ago

auditing-service v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

auditing-service

Description

This is an audit logging package which logs all the crud operations performed in a database collection in MongoDB. Essentially, all the crud operations performed are stored in a separate collection consisting of the following fields:

dbName
ipAddress
operation
documentID
dataBefore
dataAfter
outcome
time

🔥 Getting Started

  1. Install this package using "npm install auditing-service".
  2. Import the package in your code.
const auditingService = require("auditing-service");
  1. Initialize the package by invoking "initAudit" function. By default, a collection named "audit_trails" will be created in a database named "auditDB".
auditingService.initAudit(YOUR_MONGO_URI);
// Eg - auditingService.initAudit(mongodb+srv://username:password@something_here.mongodb.net/);

// OR

auditingService.initAudit(YOUR_MONGO_URI, YOUR_DB_NAME, YOUR_COLLECTION_NAME);
// Eg - auditingService.initAudit(mongodb+srv://username:password@something_here.mongodb.net/, "abcDB", "myAuditTrails");

⚡ Usage

(a) CREATE

Success Scenario

// Function prototype
auditingService.createAudit(oldData, newData, outcome);

// Example
auditingService.createAudit(
  null,
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  "success"
);

For a success scenario, before create operation is performed, oldData is null. If the operation is successful, the newData should not be null and outcome is "success".

Failure Scenario

// Function prototype
auditingService.createAudit(oldData, newData, outcome);

// Example
auditingService.createAudit(null, null, "failure");

For a failure scenario, before create operation is performed, oldData is null. If the operation fails, the newData should be null and outcome is "failure".

(b) READ

Success Scenario

// Function prototype
auditingService.reeadAudit(oldData, newData, outcome);

// Example
auditingService.readAudit(
  [
    {
      name: "John",
      age: 21,
      school: "ABC",
    },
    {
      name: "Bill",
      age: 31,
      school: "CDF",
    },
  ],
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  "success"
);

For a success scenario, before read operation is performed, oldData is not null. If the operation is successful, the newData should not be null as well and outcome is "success". The oldData/newData can be a single object or an array of objects.

Failure Scenario

// Function prototype
auditingService.readAudit(oldData, newData, outcome);

// Example
auditingService.readAudit(
  [
    {
      name: "John",
      age: 21,
      school: "ABC",
    },
    {
      name: "Bill",
      age: 31,
      school: "CDF",
    },
  ],
  null,
  "failure"
);

For a failure scenario, before read operation is performed, oldData is not null. If the operation fails, the newData should be null and outcome is "failure". The oldData can be a single object or an array of objects.

(c) UPDATE

Success Scenario

// Function prototype
auditingService.updateAudit(oldData, newData, outcome);

// Example
auditingService.updateAudit(
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  {
    name: "Bill",
    age: 31,
    school: "CDF",
  },
  "success"
);

For a success scenario, before update operation is performed, oldData is not null. If the operation succeeds, the newData should not be null as well and outcome is "success".

Failure Scenario

// Function prototype
auditingService.updateAudit(oldData, newData, outcome);

// Example
auditingService.updateAudit(
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  "failure"
);

For a failure scenario, before update operation is performed, oldData is not null. If the operation succeeds, the newData should be equal to oldData and outcome is "failure".

(d) DELETE

Success Scenario

// Function prototype
auditingService.deleteAudit(oldData, newData, outcome);

// Example
auditingService.deleteAudit(
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  null,
  "success"
);

For a success scenario, before delete operation is performed, oldData is not null. If the operation succeeds, the newData should be null and outcome is "success".

Failure Scenario

// Function prototype
auditingService.deleteAudit(oldData, newData, outcome);

// Example
auditingService.deleteAudit(
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  {
    name: "John",
    age: 21,
    school: "ABC",
  },
  "failure"
);

For a failure scenario, before delete operation is performed, oldData is not null. If the operation fails, the newData should be equal to oldData and outcome is "failure".

1.0.1

2 years ago

1.0.0

2 years ago