@ordentco/addons-auth-provider 0.9.8 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
var __assign = (this && this.__assign) || function () {
|
|
3
|
-
__assign = Object.assign || function(t) {
|
|
4
|
-
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
-
s = arguments[i];
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
}
|
|
9
|
-
return t;
|
|
10
|
-
};
|
|
11
|
-
return __assign.apply(this, arguments);
|
|
12
|
-
};
|
|
13
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
24
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
-
function step(op) {
|
|
27
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
-
switch (op[0]) {
|
|
32
|
-
case 0: case 1: t = op; break;
|
|
33
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
-
default:
|
|
37
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
-
if (t[2]) _.ops.pop();
|
|
42
|
-
_.trys.pop(); continue;
|
|
43
|
-
}
|
|
44
|
-
op = body.call(thisArg, _);
|
|
45
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
import axios from "axios";
|
|
50
|
-
//@ts-ignore
|
|
51
|
-
import crypto from "crypto-js";
|
|
52
|
-
export var customAxios = axios.create({
|
|
53
|
-
baseURL: process.env["NEXT_PUBLIC_API_URL"],
|
|
54
|
-
headers: {
|
|
55
|
-
"Content-Type": "application/json",
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
customAxios.interceptors.request.use(function (config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
59
|
-
var accessToken, header;
|
|
60
|
-
return __generator(this, function (_a) {
|
|
61
|
-
accessToken = localStorage.getItem("access-token");
|
|
62
|
-
if (accessToken) {
|
|
63
|
-
header = __assign(__assign({}, config.headers), { Authorization: "Bearer ".concat(accessToken) });
|
|
64
|
-
config.headers = header;
|
|
65
|
-
}
|
|
66
|
-
return [2 /*return*/, config];
|
|
67
|
-
});
|
|
68
|
-
}); }, function (error) { return Promise.reject(error); });
|
|
69
|
-
var isRefreshing = false;
|
|
70
|
-
var failedQueue = [];
|
|
71
|
-
var processQueue = function (error, token) {
|
|
72
|
-
if (token === void 0) { token = null; }
|
|
73
|
-
failedQueue.forEach(function (prom) {
|
|
74
|
-
if (error) {
|
|
75
|
-
prom.reject(error);
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
prom.resolve(token);
|
|
79
|
-
}
|
|
80
|
-
});
|
|
81
|
-
failedQueue = [];
|
|
82
|
-
};
|
|
83
|
-
customAxios.interceptors.response.use(function (response) {
|
|
84
|
-
return response;
|
|
85
|
-
}, function (error) {
|
|
86
|
-
var _a, _b, _c;
|
|
87
|
-
var originalRequest = error.config;
|
|
88
|
-
var pathname = window.location.pathname;
|
|
89
|
-
var isLanding = pathname === '/landing-page';
|
|
90
|
-
// handling error login from landing-page
|
|
91
|
-
if (error && isLanding) {
|
|
92
|
-
return Promise.reject(__assign({}, error));
|
|
93
|
-
}
|
|
94
|
-
if (((_b = (_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) === "Another Login Detected" || (error === null || error === void 0 ? void 0 : error.message) === "Another Login Detected") {
|
|
95
|
-
localStorage.removeItem("access-token");
|
|
96
|
-
localStorage.removeItem("refresh-token");
|
|
97
|
-
window.location.href = "/login?logout=true";
|
|
98
|
-
return;
|
|
99
|
-
}
|
|
100
|
-
if (((_c = error === null || error === void 0 ? void 0 : error.response) === null || _c === void 0 ? void 0 : _c.status) === 401 && !originalRequest._retry) {
|
|
101
|
-
if (isRefreshing) {
|
|
102
|
-
return new Promise(function (resolve, reject) {
|
|
103
|
-
failedQueue.push({ resolve: resolve, reject: reject });
|
|
104
|
-
})
|
|
105
|
-
.then(function (token) {
|
|
106
|
-
originalRequest.headers["Authorization"] = "Bearer " + token;
|
|
107
|
-
return customAxios(originalRequest);
|
|
108
|
-
})
|
|
109
|
-
.catch(function (err) {
|
|
110
|
-
return Promise.reject(err);
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
originalRequest._retry = true;
|
|
114
|
-
isRefreshing = true;
|
|
115
|
-
var refreshToken_1 = localStorage.getItem("refresh-token");
|
|
116
|
-
if (!refreshToken_1) {
|
|
117
|
-
window.location.href = "/login?logout=true";
|
|
118
|
-
}
|
|
119
|
-
return new Promise(function (resolve, reject) {
|
|
120
|
-
customAxios
|
|
121
|
-
.post("/auth/refresh", { refreshToken: refreshToken_1 })
|
|
122
|
-
.then(function (_a) {
|
|
123
|
-
var _b, _c, _d, _e;
|
|
124
|
-
var data = _a.data;
|
|
125
|
-
if ((data.data.accessToken === "" || data.data.refreshToken === "")) {
|
|
126
|
-
console.log("Refresh token nya gak dapet, malah string kosong");
|
|
127
|
-
localStorage.removeItem("access-token");
|
|
128
|
-
localStorage.removeItem("refresh-token");
|
|
129
|
-
window.location.href = "/login?logout=true";
|
|
130
|
-
return;
|
|
131
|
-
}
|
|
132
|
-
var token = (_b = data === null || data === void 0 ? void 0 : data.data) === null || _b === void 0 ? void 0 : _b.accessToken;
|
|
133
|
-
var refreshToken = (_c = data === null || data === void 0 ? void 0 : data.data) === null || _c === void 0 ? void 0 : _c.accessToken;
|
|
134
|
-
var companyID = (_d = data === null || data === void 0 ? void 0 : data.data) === null || _d === void 0 ? void 0 : _d.companyID;
|
|
135
|
-
var userID = (_e = data === null || data === void 0 ? void 0 : data.data) === null || _e === void 0 ? void 0 : _e.userID;
|
|
136
|
-
localStorage.setItem("access-token", token);
|
|
137
|
-
localStorage.setItem("refresh-token", refreshToken);
|
|
138
|
-
customAxios.defaults.headers.common["Authorization"] = "Bearer " + token;
|
|
139
|
-
originalRequest.headers["Authorization"] = "Bearer " + token;
|
|
140
|
-
if (originalRequest.data !== undefined && originalRequest.data !== null) {
|
|
141
|
-
if (originalRequest.headers["Content-Type"].toString().includes("json")) {
|
|
142
|
-
var rep = JSON.parse(originalRequest.data);
|
|
143
|
-
var signature = CreateSignature(rep, companyID, userID, process.env["NEXT_PUBLIC_SIGNATURE"], token);
|
|
144
|
-
originalRequest.headers["Grpc-Metadata-Signature"] = signature;
|
|
145
|
-
}
|
|
146
|
-
else if (originalRequest.headers["Content-Type"].toString().includes("url")) {
|
|
147
|
-
var decode = decodeURIComponent(originalRequest.data);
|
|
148
|
-
var split = decode.split("=");
|
|
149
|
-
var rep = JSON.parse(split[1]);
|
|
150
|
-
var signature = CreateSignature(rep, companyID, userID, process.env["NEXT_PUBLIC_SIGNATURE"], token);
|
|
151
|
-
originalRequest.headers["Grpc-Metadata-Signature"] = signature;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
processQueue(null, token);
|
|
155
|
-
resolve(customAxios(originalRequest));
|
|
156
|
-
})
|
|
157
|
-
.catch(function (err) {
|
|
158
|
-
var _a, _b, _c, _d;
|
|
159
|
-
if (((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.code) === 404 && ((_d = (_c = err === null || err === void 0 ? void 0 : err.response) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.message) === "Not Found") {
|
|
160
|
-
localStorage.removeItem("access-token");
|
|
161
|
-
localStorage.removeItem("refresh-token");
|
|
162
|
-
window.location.href = "/login?logout=true";
|
|
163
|
-
return;
|
|
164
|
-
}
|
|
165
|
-
processQueue(err, null);
|
|
166
|
-
reject(err);
|
|
167
|
-
})
|
|
168
|
-
.finally(function () {
|
|
169
|
-
isRefreshing = false;
|
|
170
|
-
});
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
if (!error.response) {
|
|
174
|
-
return Promise.reject(__assign(__assign({}, error), { response: { data: { error: true, code: 504, message: "Connection Timeout" } } }));
|
|
175
|
-
}
|
|
176
|
-
return Promise.reject(error);
|
|
177
|
-
});
|
|
178
|
-
var CreateSignature = function (params, companyID, userID, key, token) {
|
|
179
|
-
var data = "bodydata:" + JSON.stringify(params) + "&bearer:".concat(token, "&companyid:") + companyID + "&userid:" + userID;
|
|
180
|
-
var hash = crypto.HmacSHA256(data, key);
|
|
181
|
-
return hash.toString(crypto.enc.Hex);
|
|
182
|
-
};
|
|
183
|
-
export default customAxios;
|
|
184
|
-
//# sourceMappingURL=custom.axios.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom.axios.js","sourceRoot":"","sources":["../../services/custom.axios.ts"],"names":[],"mappings":"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"}
|