All Projects → Blackburn-Labs → Parse Auditor

Blackburn-Labs / Parse Auditor

Licence: bsd-3-clause
Audit module for Parse Platform

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Parse Auditor

Laravel Auditing
Record the change log from models in Laravel
Stars: ✭ 2,210 (+11531.58%)
Mutual labels:  tracking, auditing
Mailtrackerblocker
Email tracker, read receipt and spy pixel blocker plugin for macOS Apple Mail
Stars: ✭ 821 (+4221.05%)
Mutual labels:  tracking
Barefoot
Java map matching library for integrating the map into software and services with state-of-the-art online and offline map matching that can be used stand-alone and in the cloud.
Stars: ✭ 541 (+2747.37%)
Mutual labels:  tracking
Vpp
Video++, a C++14 high performance video and image processing library.
Stars: ✭ 655 (+3347.37%)
Mutual labels:  tracking
Alphapose
Real-Time and Accurate Full-Body Multi-Person Pose Estimation&Tracking System
Stars: ✭ 5,697 (+29884.21%)
Mutual labels:  tracking
My Arsenal Of Aws Security Tools
List of open source tools for AWS security: defensive, offensive, auditing, DFIR, etc.
Stars: ✭ 6,464 (+33921.05%)
Mutual labels:  auditing
Timewarrior
Timewarrior - Commandline Time Reporting
Stars: ✭ 528 (+2678.95%)
Mutual labels:  tracking
Find Lf
Track the location of every Wi-Fi device (📱) in your house using Raspberry Pis and FIND
Stars: ✭ 893 (+4600%)
Mutual labels:  tracking
Trape
People tracker on the Internet: OSINT analysis and research tool by Jose Pino
Stars: ✭ 6,753 (+35442.11%)
Mutual labels:  tracking
Siamdw
[CVPR'19 Oral] Deeper and Wider Siamese Networks for Real-Time Visual Tracking
Stars: ✭ 635 (+3242.11%)
Mutual labels:  tracking
Yett
🔐A small webpage library to control the execution of (third party) scripts
Stars: ✭ 615 (+3136.84%)
Mutual labels:  tracking
Php Ga Measurement Protocol
Send data to Google Analytics from the server using PHP. Implements GA measurement protocol.
Stars: ✭ 561 (+2852.63%)
Mutual labels:  tracking
Rotki
A portfolio tracking, analytics, accounting and tax reporting application that protects your privacy
Stars: ✭ 689 (+3526.32%)
Mutual labels:  tracking
Twa
A tiny web auditor with strong opinions.
Stars: ✭ 549 (+2789.47%)
Mutual labels:  auditing
Jeelizweboji
JavaScript/WebGL real-time face tracking and expression detection library. Build your own emoticons animated in real time in the browser! SVG and THREE.js integration demos are provided.
Stars: ✭ 835 (+4294.74%)
Mutual labels:  tracking
Eco
Matlab implementation of the ECO tracker.
Stars: ✭ 537 (+2726.32%)
Mutual labels:  tracking
Rack Tracker
Tracking made easy: Don’t fool around with adding tracking and analytics partials to your app and concentrate on the things that matter.
Stars: ✭ 601 (+3063.16%)
Mutual labels:  tracking
Map Matching
The map matching functionality is now located in the main repository https://github.com/graphhopper/graphhopper#map-matching
Stars: ✭ 665 (+3400%)
Mutual labels:  tracking
Umbraco Nexu
Umbraco package that let's you track internal links in Umbraco
Stars: ✭ 18 (-5.26%)
Mutual labels:  tracking
Pyamplitude
A Python connector for Amplitude Analytics
Stars: ✭ 16 (-15.79%)
Mutual labels:  tracking

Parse Auditor

This is a small module inspired by Hibernate's Envers project. It adds automated data versioning/tracking/auditing to classes.

This can be very helpful for apps that need to adhere to regulations like healthcare apps which need to adhere to HIPAA standards. This can also be used for apps that have a high level of data sensitivity like legal or FinTech apps.


Install

You can use parse-auditor anywhere you can use other cloud code hooks, such as Parse.Cloud.beforeSave(). To get parse-auditor onto your Parse Serve, edit the cloud/package.json file:

{
  "dependencies": {
    "parse-auditor": "*"
  }
}

Usage

Let say you have a healthcare app that needs HIPAA logging around its Patient and Clinic classes. Simply add this to your app's cloud code (i.e. cloud/main.js):

const ParseAuditor = require('parse-auditor');
ParseAuditor(['Patient', 'Clinic'])

You usage of Patient and Clinic goes unchanged, simply write/read form those classes as you normally would. However, any changes to records in either class will now be automatically versioned and tracked in Patient_AUD and Clinic_AUD respectively.

You can also tell parse-auditor which classes to track reads on:

const ParseAuditor = require('parse-auditor');
ParseAuditor(['Patient', 'Clinic'], ['Patient'])

This will not only track all edits to both these classes (creates, updates, deletes) but any views to a Patient will also be tracked. This will all be logged in classes named Patient_AUD & Clinic_AUD respectively.


Accessing Audit Data

All data for classes that are being audited are stored in *_AUD classes. These classes can be access to query the history of a record. There are 4 extra fields automatically included with each audit log:

  • meta_actor: The user involved in this event. Either the user who made the update, or the one who viewed this record.
  • meta_action: Will be "SAVE", "DELETE", or "FIND" depending on the action the user took.
  • meta_class: The name of class, convenient when combining complex audit histories across many classes.
  • meta_subject: The row being edited/viewed.

So, for exmaple, if you has a Patrient record with ID EBI363xFOg you could query the entire edit/view history of that patient (using the JavaScript Parse SDK):

const Patient = Parse.Object.extend("Patient");
const query = new Parse.Query(Patient);
query.equalTo("meta_subject", "EBI363xFOg");
const results = await query.find();
alert("Successfully retrieved " + results.length + " audit records.");
// Do something with the returned Parse.Object values
for (let i = 0; i < results.length; i++) {
  var object = results[i];
  console.log(object.get('meta_actor') + ' - ' + object.get('name'));
}

This would output the patient's name over time top the console, so you could see if it changed, and who made the change.


Configuation

The third argument to parse-auditor is a config object. The structure of this object, and its defaults are:

{
    classPrefix: '',
    classPostfix: '_AUD',
    fieldPrefix: 'meta_',
    fieldPostfix: '',
    parseSDK: Parse,
    useMasterKey: false,
    clp: {}
}

For example:

const ParseAuditor = require('parse-auditor');
const customConfig = { classPostfix: '_HISTORY', useMasterKey: true, clp: {create: { '*': true }, addField: { '*': true } } };
ParseAuditor(['Patient', 'Clinic'], ['Patient'], customConfig);

This will track all edits to these classes (creates, updates, deletes) as well as any views to a Patient. This will all be logged in classes named Patient_HISTORY & Clinic_HISTORY respectively instead of Patient_AUD/Clinic_AUD.

Project Sponsor

This project is sponsored and maintained by Blackburn Labs.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].