@sassoftware/viya-serverjs 0.6.1-1 → 0.6.1-3
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/.env +6 -16
- package/.env.server +2 -9
- package/Dockerfile +1 -1
- package/lib/handlers/codeAuth.js +2 -3
- package/lib/handlers/getApp.js +0 -1
- package/lib/handlers/logon.js +1 -2
- package/lib/handlers/proxyMapUri.js +2 -0
- package/lib/iService.js +1 -1
- package/lib/plugins/SASauth.js +28 -20
- package/lib/plugins/appCookie.js +22 -44
- package/lib/plugins/setContext.js +23 -8
- package/lib/{handlers → plugins}/setCookies.js +31 -35
- package/lib/plugins/setDefaultRoutes.js +34 -100
- package/lib/plugins/setupAuth.js +11 -30
- package/lib/plugins/setupUserRoutes.js +1 -0
- package/lib/readCerts.js +3 -3
- package/package.json +2 -2
- package/server.js +5 -313
- package/src/handlers/codeAuth.js +3 -3
- package/src/handlers/getApp.js +0 -1
- package/src/handlers/logon.js +1 -9
- package/src/handlers/proxyMapUri.js +2 -0
- package/src/iService.js +4 -3
- package/src/plugins/SASauth.js +59 -54
- package/src/plugins/appCookie.js +29 -43
- package/src/plugins/setContext.js +24 -13
- package/src/{handlers → plugins}/setCookies.js +38 -29
- package/src/plugins/setDefaultRoutes.js +22 -71
- package/src/plugins/setupAuth.js +10 -17
- package/src/plugins/setupUserRoutes.js +1 -1
- package/src/readCerts.js +32 -32
package/.env
CHANGED
|
@@ -1,28 +1,18 @@
|
|
|
1
|
-
|
|
2
1
|
APPHOST=localhost
|
|
3
2
|
APPENTRY=index.html
|
|
4
3
|
APPLOC=./public
|
|
5
|
-
|
|
4
|
+
# APPENV_PROXYSERVER=https://localhost:8080/viyaapp/proxy
|
|
5
|
+
APPENV_USEPROXY=YES
|
|
6
6
|
APPPORT=8080
|
|
7
7
|
APPNAME=viyaapp
|
|
8
8
|
AUTHFLOW=server
|
|
9
9
|
CLIENTID=viyaapp
|
|
10
10
|
CLIENTSECRET=jellico
|
|
11
11
|
REDIRECT=
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
SHOWENV=YES
|
|
12
|
+
USELOGON=FALSE
|
|
13
|
+
USETOKEN=FALSE
|
|
14
|
+
# SHOWENV=YES
|
|
15
|
+
# APPENV=
|
|
17
16
|
VIYACERT=c:\Users\kumar\viyaCert
|
|
18
17
|
NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
19
|
-
APPENV_XYZ=AA
|
|
20
|
-
APPENV_BAD=
|
|
21
|
-
|
|
22
|
-
# APPENV_PUPID=NS=https://sas-logon-app.viya.svc.cluster.local
|
|
23
|
-
|
|
24
|
-
# NAMESPACE=viya
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
18
|
|
package/.env.server
CHANGED
|
@@ -12,17 +12,10 @@ CLIENTSECRET=jellico
|
|
|
12
12
|
REDIRECT=
|
|
13
13
|
# APPDIR=./appDir
|
|
14
14
|
# HTTPS=true
|
|
15
|
-
USELOGON=
|
|
16
|
-
USETOKEN=
|
|
15
|
+
USELOGON=FALSE
|
|
16
|
+
USETOKEN=FALSE
|
|
17
17
|
# SHOWENV=YES
|
|
18
18
|
# APPENV=
|
|
19
19
|
VIYACERT=c:\Users\kumar\viyaCert
|
|
20
20
|
NODE_TLS_REJECT_UNAUTHORIZED=0
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
# NAMESPACE=viya
|
|
24
|
-
# TLS_CERT=./certs/tls.crt
|
|
25
|
-
# TLS_KEY=./certs/tls.key
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
package/Dockerfile
CHANGED
|
@@ -35,7 +35,7 @@ ENV TLS_CREATE="C:US,ST:NC,L:Cary,O:SAS Institute,OU:STO,CN:localhost"
|
|
|
35
35
|
# ENV TLS_KEY=./tls/tls.key
|
|
36
36
|
|
|
37
37
|
# Samesite specification
|
|
38
|
-
ENV SAMESITE=
|
|
38
|
+
ENV SAMESITE=Lax,false
|
|
39
39
|
|
|
40
40
|
# If your Viya instance still has a unsigned certificate set this value prior to invoking the server
|
|
41
41
|
# ENV NODE_TLS_REJECT_UNAUTHORIZED=0
|
package/lib/handlers/codeAuth.js
CHANGED
|
@@ -8,7 +8,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
exports["default"] = void 0;
|
|
11
|
-
var _setCookies = _interopRequireDefault(require("
|
|
11
|
+
var _setCookies = _interopRequireDefault(require("../plugins/setCookies"));
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
13
13
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
14
14
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
@@ -24,11 +24,10 @@ function _codeAuth() {
|
|
|
24
24
|
return _regenerator().w(function (_context) {
|
|
25
25
|
while (1) switch (_context.n) {
|
|
26
26
|
case 0:
|
|
27
|
-
debug('in
|
|
27
|
+
debug('calling setCookies in codeAuth');
|
|
28
28
|
_context.n = 1;
|
|
29
29
|
return (0, _setCookies["default"])(req, h, options);
|
|
30
30
|
case 1:
|
|
31
|
-
debug(options);
|
|
32
31
|
indexHTML = process.env.APPENTRY == null ? 'index.html' : process.env.APPENTRY;
|
|
33
32
|
if (process.env.REDIRECT != null) {
|
|
34
33
|
debug('using REDIRECT env variable', process.env.REDIRECT);
|
package/lib/handlers/getApp.js
CHANGED
package/lib/handlers/logon.js
CHANGED
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
var _setCookies = _interopRequireDefault(require("
|
|
7
|
+
var _setCookies = _interopRequireDefault(require("../plugins/setCookies"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
|
9
9
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
10
10
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
@@ -24,7 +24,6 @@ function _logon() {
|
|
|
24
24
|
while (1) switch (_context.n) {
|
|
25
25
|
case 0:
|
|
26
26
|
debugger;
|
|
27
|
-
debug('.................................................in logon');
|
|
28
27
|
_context.n = 1;
|
|
29
28
|
return (0, _setCookies["default"])(req, h, options);
|
|
30
29
|
case 1:
|
|
@@ -20,6 +20,8 @@ function _proxyMapUri() {
|
|
|
20
20
|
case 0:
|
|
21
21
|
credentials = req.auth.credentials;
|
|
22
22
|
debug('------------------------------------------');
|
|
23
|
+
debug('serverstate', req.server.state);
|
|
24
|
+
debug('state', req.state);
|
|
23
25
|
if (credentials != null) {
|
|
24
26
|
sid = credentials.sid;
|
|
25
27
|
debug('sid=', sid);
|
package/lib/iService.js
CHANGED
|
@@ -117,7 +117,7 @@ function iService(userRouteTable, useDefault, asset, allAppEnv, serverMode, user
|
|
|
117
117
|
debug2("Application information: \n\t\tAPPLOC : ".concat(process.env.APPLOC, "\n\t\tAPPENTRY: ").concat(process.env.APPENTRY, "\n"));
|
|
118
118
|
hapiServer = Hapi.server(sConfig);
|
|
119
119
|
/*
|
|
120
|
-
const cache = hapiServer.cache({ segment: '
|
|
120
|
+
const cache = hapiServer.cache({ segment: 'sid', expiresIn: 3 * 24 * 60 * 60 * 1000 });
|
|
121
121
|
hapiServer.app.cache = cache;
|
|
122
122
|
*/
|
|
123
123
|
nodeCacheOptions = {
|
package/lib/plugins/SASauth.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
3
7
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
4
8
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
5
9
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
@@ -22,20 +26,14 @@ function _asyncToGenerator(n) { return function () { var t = this, e = arguments
|
|
|
22
26
|
*
|
|
23
27
|
*/
|
|
24
28
|
|
|
25
|
-
var bell = require('@hapi/bell');
|
|
26
29
|
var uuid = require('uuid');
|
|
27
30
|
var debug = require('debug')('sasauth');
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
version: '1.0.0',
|
|
31
|
-
register: iSASauth
|
|
32
|
-
};
|
|
33
|
-
function iSASauth(_x, _x2) {
|
|
34
|
-
return _iSASauth.apply(this, arguments);
|
|
31
|
+
function SASauth(_x, _x2) {
|
|
32
|
+
return _SASauth.apply(this, arguments);
|
|
35
33
|
}
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
var
|
|
34
|
+
function _SASauth() {
|
|
35
|
+
_SASauth = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(server, options) {
|
|
36
|
+
var provider, host, bellAuthOptions;
|
|
39
37
|
return _regenerator().w(function (_context2) {
|
|
40
38
|
while (1) switch (_context2.n) {
|
|
41
39
|
case 0:
|
|
@@ -64,6 +62,20 @@ function _iSASauth() {
|
|
|
64
62
|
case 0:
|
|
65
63
|
server.log('SASAuth profile', credentials);
|
|
66
64
|
debug('credentials', credentials);
|
|
65
|
+
debug('params', params);
|
|
66
|
+
credentials.profile = {
|
|
67
|
+
provider: 'sas',
|
|
68
|
+
id: 'sasuser',
|
|
69
|
+
displayName: 'SAS User',
|
|
70
|
+
email: 'sasuser@sas.com',
|
|
71
|
+
raw: {
|
|
72
|
+
id: 'sasuser',
|
|
73
|
+
displayName: 'SAS User',
|
|
74
|
+
emails: [{
|
|
75
|
+
value: 'sasuser@sas.com'
|
|
76
|
+
}]
|
|
77
|
+
}
|
|
78
|
+
};
|
|
67
79
|
case 1:
|
|
68
80
|
return _context.a(2);
|
|
69
81
|
}
|
|
@@ -80,20 +92,16 @@ function _iSASauth() {
|
|
|
80
92
|
password: uuid.v4(),
|
|
81
93
|
clientId: options.clientId,
|
|
82
94
|
clientSecret: options.clientSecret,
|
|
83
|
-
|
|
95
|
+
isSameSite: options.isSameSite,
|
|
84
96
|
isSecure: options.isSecure
|
|
85
97
|
};
|
|
86
|
-
// console.log('SASAuth options', bellAuthOptions);
|
|
87
98
|
debug('belloptions', bellAuthOptions);
|
|
88
|
-
server.log('SASAuth', bellAuthOptions);
|
|
89
|
-
_context2.n = 1;
|
|
90
|
-
return server.register(bell);
|
|
91
|
-
case 1:
|
|
92
99
|
server.auth.strategy('sas', 'bell', bellAuthOptions);
|
|
93
|
-
case
|
|
100
|
+
case 1:
|
|
94
101
|
return _context2.a(2);
|
|
95
102
|
}
|
|
96
103
|
}, _callee2);
|
|
97
104
|
}));
|
|
98
|
-
return
|
|
99
|
-
}
|
|
105
|
+
return _SASauth.apply(this, arguments);
|
|
106
|
+
}
|
|
107
|
+
var _default = exports["default"] = SASauth;
|
package/lib/plugins/appCookie.js
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
3
7
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
4
8
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
5
9
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
6
10
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
7
11
|
var uuid = require('uuid');
|
|
8
|
-
var debug = require('debug')('
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
var debug = require('debug')('appcookie');
|
|
13
|
+
function appCookie(_x, _x2) {
|
|
14
|
+
return _appCookie.apply(this, arguments);
|
|
15
|
+
}
|
|
16
|
+
function _appCookie() {
|
|
17
|
+
_appCookie = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(server, options) {
|
|
11
18
|
var cookieOptions;
|
|
12
19
|
return _regenerator().w(function (_context2) {
|
|
13
20
|
while (1) switch (_context2.n) {
|
|
14
21
|
case 0:
|
|
15
|
-
_context2.n = 1;
|
|
16
|
-
return server.register(require('@hapi/cookie'));
|
|
17
|
-
case 1:
|
|
18
22
|
debug('in appCookie');
|
|
19
23
|
debug(options.redirectTo);
|
|
20
24
|
cookieOptions = {
|
|
21
25
|
cookie: {
|
|
22
|
-
name: '
|
|
26
|
+
name: 'session',
|
|
23
27
|
password: uuid.v4(),
|
|
24
28
|
isSecure: options.isSecure,
|
|
25
29
|
isSameSite: options.isSameSite
|
|
@@ -30,47 +34,21 @@ module.exports = /*#__PURE__*/function () {
|
|
|
30
34
|
},
|
|
31
35
|
validate: function () {
|
|
32
36
|
var _validate = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, session) {
|
|
33
|
-
var credentials, sid;
|
|
34
37
|
return _regenerator().w(function (_context) {
|
|
35
38
|
while (1) switch (_context.n) {
|
|
36
39
|
case 0:
|
|
37
|
-
debug('
|
|
38
|
-
if (
|
|
40
|
+
debug('validating cookie session', session);
|
|
41
|
+
if (session) {
|
|
39
42
|
_context.n = 1;
|
|
40
43
|
break;
|
|
41
44
|
}
|
|
42
|
-
console.log('session is null');
|
|
43
45
|
return _context.a(2, {
|
|
44
46
|
isValid: false
|
|
45
47
|
});
|
|
46
48
|
case 1:
|
|
47
|
-
credentials = null;
|
|
48
|
-
if (Array.isArray(session) === true && session.length > 0) {
|
|
49
|
-
sid = session[0].sid;
|
|
50
|
-
} else {
|
|
51
|
-
sid = session.sid;
|
|
52
|
-
}
|
|
53
|
-
if (!(sid != null)) {
|
|
54
|
-
_context.n = 3;
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
_context.n = 2;
|
|
58
|
-
return req.server.app.cache.get(sid);
|
|
59
|
-
case 2:
|
|
60
|
-
credentials = _context.v;
|
|
61
|
-
case 3:
|
|
62
|
-
if (!(credentials == null)) {
|
|
63
|
-
_context.n = 4;
|
|
64
|
-
break;
|
|
65
|
-
}
|
|
66
|
-
return _context.a(2, {
|
|
67
|
-
isValid: false
|
|
68
|
-
});
|
|
69
|
-
case 4:
|
|
70
|
-
debug('Cookie validateFunc', sid);
|
|
71
49
|
return _context.a(2, {
|
|
72
50
|
isValid: true,
|
|
73
|
-
credentials: credentials
|
|
51
|
+
credentials: session // becomes request.auth.credentials
|
|
74
52
|
});
|
|
75
53
|
}
|
|
76
54
|
}, _callee);
|
|
@@ -80,16 +58,16 @@ module.exports = /*#__PURE__*/function () {
|
|
|
80
58
|
}
|
|
81
59
|
return validate;
|
|
82
60
|
}()
|
|
83
|
-
};
|
|
84
|
-
debug('
|
|
61
|
+
};
|
|
62
|
+
debug('session cookie options', cookieOptions);
|
|
85
63
|
server.auth.strategy('session', 'cookie', cookieOptions);
|
|
86
|
-
|
|
64
|
+
server.auth["default"]('session');
|
|
65
|
+
case 1:
|
|
87
66
|
return _context2.a(2);
|
|
88
67
|
}
|
|
89
68
|
}, _callee2);
|
|
90
69
|
}));
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
}();
|
|
70
|
+
return _appCookie.apply(this, arguments);
|
|
71
|
+
}
|
|
72
|
+
;
|
|
73
|
+
var _default = exports["default"] = appCookie;
|
|
@@ -26,31 +26,46 @@ function _asyncToGenerator(n) { return function () { var t = this, e = arguments
|
|
|
26
26
|
*
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
-
var debug = require('debug')('
|
|
29
|
+
var debug = require('debug')('setcontext');
|
|
30
30
|
function setContext(_x, _x2) {
|
|
31
31
|
return _setContext.apply(this, arguments);
|
|
32
32
|
}
|
|
33
33
|
function _setContext() {
|
|
34
34
|
_setContext = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, h) {
|
|
35
|
-
var credentials, context;
|
|
35
|
+
var credentials, cachedCredentials, fcredentials, context, _t;
|
|
36
36
|
return _regenerator().w(function (_context) {
|
|
37
|
-
while (1) switch (_context.n) {
|
|
37
|
+
while (1) switch (_context.p = _context.n) {
|
|
38
38
|
case 0:
|
|
39
39
|
credentials = req.auth.credentials;
|
|
40
|
-
|
|
40
|
+
cachedCredentials = null; // use this once cookies are working properly
|
|
41
|
+
debug('Set Context Credentials', req.path, credentials);
|
|
42
|
+
_context.p = 1;
|
|
43
|
+
_context.n = 2;
|
|
44
|
+
return req.server.app.cache.get('session');
|
|
45
|
+
case 2:
|
|
46
|
+
cachedCredentials = _context.v;
|
|
47
|
+
debug('Cached Credentials', cachedCredentials);
|
|
48
|
+
_context.n = 4;
|
|
49
|
+
break;
|
|
50
|
+
case 3:
|
|
51
|
+
_context.p = 3;
|
|
52
|
+
_t = _context.v;
|
|
53
|
+
debug('No cached credentials');
|
|
54
|
+
case 4:
|
|
55
|
+
fcredentials = credentials || cachedCredentials;
|
|
41
56
|
context = {
|
|
42
57
|
path: req.path,
|
|
43
58
|
params: req.params,
|
|
44
59
|
query: req.query,
|
|
45
60
|
payload: req.payload,
|
|
46
|
-
queryOrig:
|
|
47
|
-
|
|
48
|
-
credentials:
|
|
61
|
+
queryOrig: fcredentials != null ? fcredentials.query : {},
|
|
62
|
+
credentials: fcredentials,
|
|
63
|
+
credType: credentials != null ? 'auth' : 'cached',
|
|
49
64
|
host: process.env.VIYA_SERVER
|
|
50
65
|
};
|
|
51
66
|
return _context.a(2, context);
|
|
52
67
|
}
|
|
53
|
-
}, _callee);
|
|
68
|
+
}, _callee, null, [[1, 3]]);
|
|
54
69
|
}));
|
|
55
70
|
return _setContext.apply(this, arguments);
|
|
56
71
|
}
|
|
@@ -4,14 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports["default"] = void 0;
|
|
7
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
7
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
9
8
|
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
10
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
14
|
-
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
9
|
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
16
10
|
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
17
11
|
/*
|
|
@@ -25,12 +19,11 @@ function setCookies(_x, _x2, _x3) {
|
|
|
25
19
|
}
|
|
26
20
|
function _setCookies() {
|
|
27
21
|
_setCookies = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(req, h, options) {
|
|
28
|
-
var credentials, sid, redirect;
|
|
22
|
+
var credentials, cookieInfo, sid, redirect;
|
|
29
23
|
return _regenerator().w(function (_context) {
|
|
30
24
|
while (1) switch (_context.n) {
|
|
31
25
|
case 0:
|
|
32
|
-
credentials = req.auth.credentials;
|
|
33
|
-
debug('setcookie', credentials);
|
|
26
|
+
credentials = req.auth.credentials; // protect against failed logon
|
|
34
27
|
if (!(credentials != null && req.auth.error != null)) {
|
|
35
28
|
_context.n = 1;
|
|
36
29
|
break;
|
|
@@ -43,28 +36,31 @@ function _setCookies() {
|
|
|
43
36
|
error: req.auth.error
|
|
44
37
|
});
|
|
45
38
|
case 1:
|
|
46
|
-
|
|
39
|
+
debug('credentials in setcookie', credentials);
|
|
40
|
+
|
|
41
|
+
// use cookieAuth to set cookies
|
|
42
|
+
cookieInfo = {
|
|
43
|
+
name: 'session',
|
|
44
|
+
accessToken: credentials.token,
|
|
45
|
+
refreshToken: credentials.refreshToken,
|
|
46
|
+
expiresIn: credentials.expiresIn,
|
|
47
|
+
provider: credentials.provider
|
|
48
|
+
};
|
|
49
|
+
debug('------------set cookie-------------\n', cookieInfo);
|
|
50
|
+
console.log('is it there', req.cookieAuth != null);
|
|
51
|
+
_context.n = 2;
|
|
52
|
+
return req.server.app.cache.set('session', cookieInfo, 0);
|
|
53
|
+
case 2:
|
|
54
|
+
req.cookieAuth.set(cookieInfo);
|
|
55
|
+
|
|
56
|
+
// set sid
|
|
47
57
|
sid = uuid.v4();
|
|
48
58
|
credentials.sid = sid;
|
|
49
59
|
if (options != null) {
|
|
50
60
|
options.allAppEnv.LOGONPAYLOAD.token = credentials.token;
|
|
51
61
|
options.allAppEnv.LOGONPAYLOAD.tokenType = 'bearer';
|
|
52
|
-
options.userCache = _objectSpread({}, credentials);
|
|
53
62
|
debug(options.allAppEnv.LOGONPAYLOAD);
|
|
54
63
|
}
|
|
55
|
-
debug('userCache', options.userCache);
|
|
56
|
-
_context.n = 2;
|
|
57
|
-
return req.server.app.cache.set(sid, credentials, 0);
|
|
58
|
-
case 2:
|
|
59
|
-
// Can we get away without setting cookie for this session?
|
|
60
|
-
// Need to also modify keepAlive
|
|
61
|
-
if (process.env.COOKIES !== 'NO') {
|
|
62
|
-
debugger;
|
|
63
|
-
req.cookieAuth.set({
|
|
64
|
-
sid: sid
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
;
|
|
68
64
|
debug('credentials query', credentials.query);
|
|
69
65
|
redirect = credentials.query != null && credentials.query.next != null ? credentials.query.next : null;
|
|
70
66
|
debug('setcookie-redirect', redirect);
|
|
@@ -90,23 +86,23 @@ async function getCredentials (req) {
|
|
|
90
86
|
};
|
|
91
87
|
|
|
92
88
|
let payload = {
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
url : `${process.env.VIYA_SERVER}/SASLogon/oauth/token`,
|
|
90
|
+
method: 'POST',
|
|
95
91
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
92
|
+
headers: {
|
|
93
|
+
// 'Authorization': 'Basic ' + Buffer.from(`${process.env.CLIENTID}:${process.env.CLIENTSECRET}`).toString('base64'),
|
|
94
|
+
'Accept' : 'application/json',
|
|
95
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
96
|
+
},
|
|
101
97
|
data: qs.stringify({
|
|
102
98
|
client_id : `${process.env.CLIENTID}`,
|
|
103
99
|
client_secret: `${process.env.CLIENTSECRET}`,
|
|
104
100
|
redirect_uri : `${location}`,
|
|
105
101
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
102
|
+
'grant_type': 'authorization_code',
|
|
103
|
+
code : req.query.code
|
|
104
|
+
})
|
|
105
|
+
};
|
|
110
106
|
try {
|
|
111
107
|
let r = await axios(payload);
|
|
112
108
|
return r.data;
|