Vulcan/packages/vulcan-lib/lib/client/auth.js
2018-05-18 08:26:25 +09:00

54 lines
No EOL
1.3 KiB
JavaScript

import Cookies from 'universal-cookie';
import { Meteor } from 'meteor/meteor';
import { getRenderContext } from './render_context.js';
const cookie = new Cookies();
function setToken(loginToken, expires) {
if (loginToken && expires !== -1) {
cookie.set('meteor_login_token', loginToken, {
path: '/',
expires,
});
} else {
cookie.remove('meteor_login_token', {
path: '/',
});
}
}
function resetToken() {
const context = getRenderContext();
const loginToken = global.localStorage['Meteor.loginToken'];
const loginTokenExpires = new Date(global.localStorage['Meteor.loginTokenExpires']);
if (loginToken) {
setToken(loginToken, loginTokenExpires);
} else {
setToken(null, -1);
}
context.loginToken = loginToken;
}
Meteor.startup(() => {
resetToken();
});
const originalSetItem = Meteor._localStorage.setItem;
Meteor._localStorage.setItem = function setItem(key, value) {
if (key === 'Meteor.loginToken') {
Meteor.defer(resetToken);
}
originalSetItem.call(Meteor._localStorage, key, value);
};
const originalRemoveItem = Meteor._localStorage.removeItem;
Meteor._localStorage.removeItem = function removeItem(key) {
if (key === 'Meteor.loginToken') {
Meteor.defer(resetToken);
}
originalRemoveItem.call(Meteor._localStorage, key);
};