1
0
mirror of https://github.com/bitwarden/web synced 2025-12-26 13:13:24 +00:00
Files
web/src/app/services/tokenService.js
Kyle Spearrin e674e7287e token refresh
2017-01-28 16:09:38 -05:00

64 lines
1.8 KiB
JavaScript

angular
.module('bit.services')
.factory('tokenService', function ($sessionStorage, jwtHelper) {
var _service = {},
_token = null,
_refreshToken = null;
_service.setToken = function (token) {
$sessionStorage.accessToken = token;
_token = token;
};
_service.getToken = function () {
if (!_token) {
_token = $sessionStorage.accessToken;
}
return _token ? _token : null;
};
_service.clearToken = function () {
_token = null;
delete $sessionStorage.accessToken;
};
_service.setRefreshToken = function (token) {
$sessionStorage.refreshToken = token;
_refreshToken = token;
};
_service.getRefreshToken = function () {
if (!_refreshToken) {
_refreshToken = $sessionStorage.refreshToken;
}
return _refreshToken ? _refreshToken : null;
};
_service.clearRefreshToken = function () {
_refreshToken = null;
delete $sessionStorage.refreshToken;
};
_service.tokenSecondsRemaining = function (token, offsetSeconds) {
var d = jwtHelper.getTokenExpirationDate(token);
offsetSeconds = offsetSeconds || 0;
if (d === null) {
return 0;
}
var msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));
return Math.round(msRemaining / 1000);
};
_service.tokenNeedsRefresh = function (token, minutes) {
minutes = minutes || 5; // default 5 minutes
var sRemaining = _service.tokenSecondsRemaining(token);
return sRemaining < (60 * minutes);
};
return _service;
});