UNPKG

3.23 kBJavaScriptView Raw
1import Base64 from 'base-64';
2import $ from 'jquery';
3import { settings } from '../contexts';
4
5export class Token {
6
7 static getAccessToken() {
8 //var token = localStorage.getItem('bearerToken');
9 var token = null;
10 var jsonToken = localStorage.getItem('token');
11 if (jsonToken) {
12 token = JSON.parse(jsonToken).access_token;
13 }
14 return token;
15 }
16
17 static setAuthToken(jsonToken) {
18 if (jsonToken !== undefined) {
19 localStorage.setItem('token', jsonToken);
20 var now = new Date();
21 localStorage.setItem('creationDate', now);
22 }
23 }
24
25 static removeToken() {
26 localStorage.removeItem('token');
27 localStorage.removeItem('creationDate');
28 }
29
30
31 static passwordCredentialGrant(username, password) {
32 var authHeader = 'Basic ' + Base64.encode(settings.OAUTH2_CLIENT_ID + ':' + settings.OAUTH2_CLIENT_SECRET);
33 return new Promise((resolve, reject) => {
34 $.ajax({
35 method: 'POST',
36 url: settings.OAUTH2_BASE_ENDPOINT + 'token/',
37 data: $.param({
38 grant_type: 'password', //eslint-disable-line camelcase
39 username: username,
40 password: password
41 }),
42 headers: {
43 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
44 Authorization: authHeader
45 }
46 }).success((data) => {
47 Token.setAuthToken(JSON.stringify(data));
48 resolve(data.access_token);
49
50 }).error((xhr) => {
51 console.log(xhr);
52 reject(xhr);
53 });
54 });
55 }
56
57 static refreshTokenCredentialGrant(refreshToken) {
58 var authHeader = 'Basic ' + Base64.encode(settings.OAUTH2_CLIENT_ID + ':' + settings.OAUTH2_CLIENT_SECRET);
59 return new Promise((resolve, reject) => {
60 $.ajax({
61 method: 'POST',
62 url: settings.OAUTH2_BASE_ENDPOINT + 'token/',
63 data: $.param({
64 grant_type: 'refresh_token', //eslint-disable-line camelcase
65 refresh_token: refreshToken //eslint-disable-line camelcase
66 }),
67 headers: {
68 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
69 Authorization: authHeader
70 }
71 }).success((data) => {
72 Token.setAuthToken(JSON.stringify(data));
73 resolve(data.access_token);
74
75 }).error((xhr) => {
76 console.log(xhr);
77 reject(xhr);
78 });
79 });
80 }
81
82 static validateToken() {
83 return new Promise((resolve, reject) => {
84 var creationDate = new Date(localStorage.getItem('creationDate'));
85 var now = new Date();
86 var jsonToken = localStorage.getItem('token');
87 if (jsonToken) {
88 var expiresIn = parseInt(JSON.parse(jsonToken).expires_in) * 1000; // localStorage.getItem('expiresIn')) * 1000;
89 var refreshToken = JSON.parse(jsonToken).refresh_token; // localStorage.getItem('refreshToken');
90 var cachedToken = JSON.parse(jsonToken).access_token;
91 if (now - creationDate > expiresIn - 10000) {
92 Token.refreshTokenCredentialGrant(refreshToken).then((token) => {
93 resolve(token);
94 }, (xhr) => {
95 reject(xhr);
96 });
97 } else {
98 resolve(cachedToken);
99 }
100 } else {
101 reject();
102 }
103 });
104 }
105}