major-a
Version:
A simple and easy to implement user authentication and tracking module for Express.
60 lines (50 loc) • 1.56 kB
JavaScript
const ResourceAnalytics = require(__dirname +
'/../../models/resource-analytics');
const handleDbSaveError = require(__dirname + '/../errors/handle-db-save-error');
// Creates and readies a new resource tracker document -- SEE models/resource-analytics.js
var createNewTracker = function(resourceId, resourceType) {
// New Tracker
var newTracker = new ResourceAnalytics();
// Call constructor
newTracker.createNew(resourceId, resourceType);
// Save
newTracker.save((err, newTracker) => {
if (err) handleDbSaveError(err);
});
};
// Tracks a resource -- SEE models/resource-analytics.js
var trackResource = function(resourceId, userId) {
ResourceAnalytics.findOne({
owner_id: resourceId
}, (err, resourceTracker) => {
if (err || !resourceTracker) return handleDbSaveError(err);
resourceTracker.trackLoggedIn(userId);
});
};
var trackAnon = function(resourceId) {
ResourceAnalytics.findOne({
owner_id: resourceId
}, (err, resourceTracker) => {
if (err || !resourceTracker) return handleDbSaveError(err);
resourceTracker.trackAnon();
});
}
var returnResourceTracking = function(ownerArray) {
return new Promise((resolve, reject) => {
ResourceAnalytics.find({
owner_id: {
$in: ownerArray
}
}, (err, tracker) => {
if (err) reject(err);
if (!tracker) reject(err);
resolve(tracker);
})
})
}
module.exports = exports = {
createTracker: createNewTracker,
trackLoggedIn: trackResource,
trackAnon: trackAnon,
getTrackers: returnResourceTracking
};