-
Notifications
You must be signed in to change notification settings - Fork 187
/
oauth-token-provider.js
125 lines (92 loc) · 2.05 KB
/
oauth-token-provider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
* Module dependencies.
*/
import angular from 'angular';
/**
* Token provider.
*/
function OAuthTokenProvider() {
var config = {
name: 'token',
options: {
secure: true
}
};
/**
* Configure.
*
* @param {object} params - An `object` of params to extend.
*/
this.configure = function(params) {
// Check if is an `object`.
if (!(params instanceof Object)) {
throw new TypeError('Invalid argument: `config` must be an `Object`.');
}
// Extend default configuration.
angular.extend(config, params);
return config;
};
/**
* OAuthToken service.
*/
this.$get = function($cookies) {
class OAuthToken {
/**
* Set token.
*/
setToken(data) {
return $cookies.putObject(config.name, data, config.options);
}
/**
* Get token.
*/
getToken() {
return $cookies.getObject(config.name);
}
/**
* Get accessToken.
*/
getAccessToken() {
const { access_token } = this.getToken() || {};
return access_token;
}
/**
* Get authorizationHeader.
*/
getAuthorizationHeader() {
const tokenType = this.getTokenType();
const accessToken = this.getAccessToken();
if (!tokenType || !accessToken) {
return;
}
return `${tokenType.charAt(0).toUpperCase() + tokenType.substr(1)} ${accessToken}`;
}
/**
* Get refreshToken.
*/
getRefreshToken() {
const { refresh_token } = this.getToken() || {};
return refresh_token;
}
/**
* Get tokenType.
*/
getTokenType() {
const { token_type } = this.getToken() || {};
return token_type;
}
/**
* Remove token.
*/
removeToken() {
return $cookies.remove(config.name, config.options);
}
}
return new OAuthToken();
};
this.$get.$inject = ['$cookies'];
}
/**
* Export `OAuthTokenProvider`.
*/
export default OAuthTokenProvider;