57 lines
1.5 KiB
JavaScript
57 lines
1.5 KiB
JavaScript
var AuthEngine = function () {
|
|
this._internalStorage = {};
|
|
};
|
|
|
|
AuthEngine.prototype._isLocalStorageEnabled = function () {
|
|
var err;
|
|
try {
|
|
// Some browsers will throw an error here if localStorage is disabled.
|
|
global.localStorage;
|
|
|
|
// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem
|
|
// throw QuotaExceededError. We're going to detect this and avoid hard to debug edge cases.
|
|
global.localStorage.setItem('__scLocalStorageTest', 1);
|
|
global.localStorage.removeItem('__scLocalStorageTest');
|
|
} catch (e) {
|
|
err = e;
|
|
}
|
|
return !err;
|
|
};
|
|
|
|
AuthEngine.prototype.saveToken = function (name, token, options, callback) {
|
|
if (this._isLocalStorageEnabled() && global.localStorage) {
|
|
global.localStorage.setItem(name, token);
|
|
} else {
|
|
this._internalStorage[name] = token;
|
|
}
|
|
callback && callback(null, token);
|
|
};
|
|
|
|
AuthEngine.prototype.removeToken = function (name, callback) {
|
|
var token;
|
|
|
|
this.loadToken(name, function (err, authToken) {
|
|
token = authToken;
|
|
});
|
|
|
|
if (this._isLocalStorageEnabled() && global.localStorage) {
|
|
global.localStorage.removeItem(name);
|
|
}
|
|
delete this._internalStorage[name];
|
|
|
|
callback && callback(null, token);
|
|
};
|
|
|
|
AuthEngine.prototype.loadToken = function (name, callback) {
|
|
var token;
|
|
|
|
if (this._isLocalStorageEnabled() && global.localStorage) {
|
|
token = global.localStorage.getItem(name);
|
|
} else {
|
|
token = this._internalStorage[name] || null;
|
|
}
|
|
callback(null, token);
|
|
};
|
|
|
|
module.exports.AuthEngine = AuthEngine;
|