ohm
Version:
Node.js Session Manager
119 lines (108 loc) • 3.24 kB
JavaScript
;
(function () {
'use strict';
var emptyFunction = include('models/emptyFunction.js');
var Parse = include('apis/Parse.js');
/**
* This class is the essential class for determining
* the identity of the logged in user.
*
* Never create a ViewerContext on your own, that is, DONT DO
* > new ViewerContext(foo); // THIS IS BAD!!
*
* Instead do
* > ViewerContext.fetchWithFBUserID(fbUserID, callback);
*
* or
* > ViewerContext.genFromViewerContextID(viewerContextID, callback);
*
* The reason is so we never create more than one viewer context per
* request.
* @module ViewerContext
*/
var ViewerContext = Parse.Object.extend('ViewerContext', {
/**
* @param {object} slug
*/
getCredential: function getCredential(slug) {
return this.get(slug);
},
/**
* @param {object} slug
* @param {object} token
*/
setCredential: function setCredential(slug, token) {
return this.set(slug, token);
},
/**
* @param {object} slug
*/
clearCredential: function clearCredential(slug) {
return this.set(slug, {});
},
/**
* @param {function} callback
*/
saveParseObject: function saveParseObject(callback) {
this.save(null, {
success: function success(data) {
callback(null, data);
},
error: function error(_error) {
callback(_error);
}
});
}
}, {
/**
* @param {function} callback
* @param {string} primaryAccountKey
* @returns {object} viewerContext
*/
genFromPrimaryAccount: function genFromPrimaryAccount(key, value, callback) {
if (!callback) {
return console.error('No callback passed into genFromClientID.');
}
if (!key) {
return callback(null, new ViewerContext({}));
}
var query = new Parse.Query(ViewerContext);
query.equalTo(key, value);
query.first().then(function (viewerContext) {
return callback(null, viewerContext);
});
},
/** Generate From ViewerContext ID
* @param {string} viewerContextID
* @param {function} callback
* @returns {object} viewerContext
*/
genFromViewerContextID: function genFromViewerContextID(viewerContextID, callback) {
if (!callback) {
return console.error('No callback passed into genFromViewerContextID.');
}
if (!viewerContextID) {
var vc = new ViewerContext();
vc.saveParseObject(function (err, data) {
return callback(null, data);
});
} else {
var query = new Parse.Query(ViewerContext);
query.get(viewerContextID, {
success: function success(viewerContext) {
return callback(null, viewerContext);
},
error: function error(object, _error2) {
return callback(_error2, new ViewerContext({}));
}
});
}
},
/** TESTING: Generate Temp ViewerContext */
genTemporaryViewerContext_UNITTEST: function genTemporaryViewerContext_UNITTEST(initData) {
var temp = new ViewerContext(initData);
return temp;
}
});
module.exports = ViewerContext;
})();