@ytsaurus/ui 1.12.2 → 1.13.1
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/build/cjs/@types/core.d.ts +38 -0
- package/build/cjs/server/components/layout-config.js +6 -1
- package/build/cjs/server/components/layout-config.js.map +1 -1
- package/build/cjs/server/components/oauth.d.ts +26 -0
- package/build/cjs/server/components/oauth.js +123 -0
- package/build/cjs/server/components/oauth.js.map +1 -0
- package/build/cjs/server/components/yt-auth.d.ts +6 -0
- package/build/cjs/server/components/yt-auth.js +23 -0
- package/build/cjs/server/components/yt-auth.js.map +1 -0
- package/build/cjs/server/controllers/login.d.ts +0 -1
- package/build/cjs/server/controllers/login.js +4 -26
- package/build/cjs/server/controllers/login.js.map +1 -1
- package/build/cjs/server/controllers/logout.d.ts +2 -0
- package/build/cjs/server/controllers/logout.js +15 -0
- package/build/cjs/server/controllers/logout.js.map +1 -0
- package/build/cjs/server/controllers/oauth-login.d.ts +4 -0
- package/build/cjs/server/controllers/oauth-login.js +30 -0
- package/build/cjs/server/controllers/oauth-login.js.map +1 -0
- package/build/cjs/server/index.js +9 -1
- package/build/cjs/server/index.js.map +1 -1
- package/build/cjs/server/middlewares/authorization.d.ts +2 -0
- package/build/cjs/server/middlewares/authorization.js +42 -0
- package/build/cjs/server/middlewares/authorization.js.map +1 -0
- package/build/cjs/server/middlewares/oauth.d.ts +2 -0
- package/build/cjs/server/middlewares/oauth.js +27 -0
- package/build/cjs/server/middlewares/oauth.js.map +1 -0
- package/build/cjs/server/middlewares/yt-auth.d.ts +1 -1
- package/build/cjs/server/middlewares/yt-auth.js +10 -42
- package/build/cjs/server/middlewares/yt-auth.js.map +1 -1
- package/build/cjs/server/routes.js +6 -1
- package/build/cjs/server/routes.js.map +1 -1
- package/build/cjs/server/utils/authorization.d.ts +6 -0
- package/build/cjs/server/utils/authorization.js +33 -0
- package/build/cjs/server/utils/authorization.js.map +1 -0
- package/build/cjs/shared/constants/index.d.ts +3 -0
- package/build/cjs/shared/constants/index.js +3 -1
- package/build/cjs/shared/constants/index.js.map +1 -1
- package/build/cjs/shared/yt-types.d.ts +2 -0
- package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js +23 -5
- package/build/cjs/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
- package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
- package/build/cjs/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
- package/build/cjs/ui/components/NumberInput/NumberInput.d.ts +1 -1
- package/build/cjs/ui/containers/AppNavigation/AppNavigation.js +2 -0
- package/build/cjs/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
- package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
- package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
- package/build/cjs/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
- package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
- package/build/cjs/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
- package/build/cjs/ui/rum/constants.d.ts +5 -1
- package/build/cjs/ui/rum/constants.js +5 -2
- package/build/cjs/ui/rum/constants.js.map +1 -1
- package/build/cjs/ui/rum/rum-counter.js +1 -1
- package/build/cjs/ui/rum/rum-counter.js.map +1 -1
- package/build/cjs/ui/store/actions/system/masters.d.ts +7 -5
- package/build/cjs/ui/store/actions/system/masters.js +305 -235
- package/build/cjs/ui/store/actions/system/masters.js.map +1 -1
- package/build/cjs/ui/store/reducers/global/index.d.ts +1 -0
- package/build/cjs/ui/store/reducers/global/index.js +1 -0
- package/build/cjs/ui/store/reducers/global/index.js.map +1 -1
- package/build/cjs/ui/store/reducers/system/masters.d.ts +2 -2
- package/build/cjs/ui/store/reducers/system/masters.js.map +1 -1
- package/build/cjs/ui/store/selectors/global/index.d.ts +4 -0
- package/build/cjs/ui/store/selectors/global/index.js +14 -4
- package/build/cjs/ui/store/selectors/global/index.js.map +1 -1
- package/build/cjs/ui/store/selectors/system/masters.d.ts +1 -1
- package/build/cjs/ui/store/selectors/system/masters.js.map +1 -1
- package/build/esm/@types/core.d.ts +38 -0
- package/build/esm/server/components/layout-config.js +7 -2
- package/build/esm/server/components/layout-config.js.map +1 -1
- package/build/esm/server/components/oauth.d.ts +26 -0
- package/build/esm/server/components/oauth.js +169 -0
- package/build/esm/server/components/oauth.js.map +1 -0
- package/build/esm/server/components/yt-auth.d.ts +6 -0
- package/build/esm/server/components/yt-auth.js +17 -0
- package/build/esm/server/components/yt-auth.js.map +1 -0
- package/build/esm/server/controllers/login.d.ts +0 -1
- package/build/esm/server/controllers/login.js +41 -88
- package/build/esm/server/controllers/login.js.map +1 -1
- package/build/esm/server/controllers/logout.d.ts +2 -0
- package/build/esm/server/controllers/logout.js +11 -0
- package/build/esm/server/controllers/logout.js.map +1 -0
- package/build/esm/server/controllers/oauth-login.d.ts +4 -0
- package/build/esm/server/controllers/oauth-login.js +50 -0
- package/build/esm/server/controllers/oauth-login.js.map +1 -0
- package/build/esm/server/index.js +7 -2
- package/build/esm/server/index.js.map +1 -1
- package/build/esm/server/middlewares/authorization.d.ts +2 -0
- package/build/esm/server/middlewares/authorization.js +74 -0
- package/build/esm/server/middlewares/authorization.js.map +1 -0
- package/build/esm/server/middlewares/oauth.d.ts +2 -0
- package/build/esm/server/middlewares/oauth.js +50 -0
- package/build/esm/server/middlewares/oauth.js.map +1 -0
- package/build/esm/server/middlewares/yt-auth.d.ts +1 -1
- package/build/esm/server/middlewares/yt-auth.js +8 -58
- package/build/esm/server/middlewares/yt-auth.js.map +1 -1
- package/build/esm/server/routes.js +16 -2
- package/build/esm/server/routes.js.map +1 -1
- package/build/esm/server/utils/authorization.d.ts +6 -0
- package/build/esm/server/utils/authorization.js +28 -0
- package/build/esm/server/utils/authorization.js.map +1 -0
- package/build/esm/shared/constants/index.d.ts +3 -0
- package/build/esm/shared/constants/index.js +2 -1
- package/build/esm/shared/constants/index.js.map +1 -1
- package/build/esm/shared/yt-types.d.ts +2 -0
- package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js +24 -6
- package/build/esm/ui/components/Login/LoginFormPage/LoginFormPage.js.map +1 -1
- package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css +8 -0
- package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.css.map +1 -1
- package/build/esm/ui/components/Login/LoginPageWrapper/LoginPageWrapper.scss +12 -0
- package/build/esm/ui/components/NumberInput/NumberInput.d.ts +1 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigation.js +3 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigation.js.map +1 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.d.ts +1 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js +5 -7
- package/build/esm/ui/containers/AppNavigation/AppNavigationComponent.js.map +1 -1
- package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.d.ts +2 -0
- package/build/esm/ui/containers/AppNavigation/AppNavigationPageLayout.js.map +1 -1
- package/build/esm/ui/rum/constants.d.ts +5 -1
- package/build/esm/ui/rum/constants.js +5 -2
- package/build/esm/ui/rum/constants.js.map +1 -1
- package/build/esm/ui/rum/rum-counter.js +1 -1
- package/build/esm/ui/rum/rum-counter.js.map +1 -1
- package/build/esm/ui/store/actions/system/masters.d.ts +7 -5
- package/build/esm/ui/store/actions/system/masters.js +303 -233
- package/build/esm/ui/store/actions/system/masters.js.map +1 -1
- package/build/esm/ui/store/reducers/global/index.d.ts +1 -0
- package/build/esm/ui/store/reducers/global/index.js +1 -0
- package/build/esm/ui/store/reducers/global/index.js.map +1 -1
- package/build/esm/ui/store/reducers/system/masters.d.ts +2 -2
- package/build/esm/ui/store/reducers/system/masters.js.map +1 -1
- package/build/esm/ui/store/selectors/global/index.d.ts +4 -0
- package/build/esm/ui/store/selectors/global/index.js +12 -2
- package/build/esm/ui/store/selectors/global/index.js.map +1 -1
- package/build/esm/ui/store/selectors/system/masters.d.ts +1 -1
- package/build/esm/ui/store/selectors/system/masters.js.map +1 -1
- package/dist/public/build/assets-manifest.json +12 -12
- package/dist/public/build/css/{main.136a49c7.css → main.e919e247.css} +2 -2
- package/dist/public/build/css/main.e919e247.css.map +1 -0
- package/dist/public/build/js/89.07445d46.chunk.js +2 -0
- package/dist/public/build/js/89.07445d46.chunk.js.map +1 -0
- package/dist/public/build/js/main.4eb01db4.js +3 -0
- package/dist/public/build/js/{main.f91e3651.js.map → main.4eb01db4.js.map} +1 -1
- package/dist/public/build/js/{runtime.6c8d85d3.js → runtime.9491563b.js} +2 -2
- package/dist/public/build/js/{runtime.6c8d85d3.js.map → runtime.9491563b.js.map} +1 -1
- package/dist/public/build/manifest.json +8 -8
- package/dist/server/components/layout-config.js +6 -1
- package/dist/server/components/oauth.d.ts +26 -0
- package/dist/server/components/oauth.js +123 -0
- package/dist/server/components/yt-auth.d.ts +6 -0
- package/dist/server/components/yt-auth.js +23 -0
- package/dist/server/controllers/login.d.ts +0 -1
- package/dist/server/controllers/login.js +4 -26
- package/dist/server/controllers/logout.d.ts +2 -0
- package/dist/server/controllers/logout.js +15 -0
- package/dist/server/controllers/oauth-login.d.ts +4 -0
- package/dist/server/controllers/oauth-login.js +30 -0
- package/dist/server/index.js +9 -1
- package/dist/server/middlewares/authorization.d.ts +2 -0
- package/dist/server/middlewares/authorization.js +42 -0
- package/dist/server/middlewares/oauth.d.ts +2 -0
- package/dist/server/middlewares/oauth.js +27 -0
- package/dist/server/middlewares/yt-auth.d.ts +1 -1
- package/dist/server/middlewares/yt-auth.js +10 -42
- package/dist/server/routes.js +6 -1
- package/dist/server/utils/authorization.d.ts +6 -0
- package/dist/server/utils/authorization.js +33 -0
- package/dist/shared/constants/index.d.ts +3 -0
- package/dist/shared/constants/index.js +3 -1
- package/package.json +2 -2
- package/dist/public/build/css/main.136a49c7.css.map +0 -1
- package/dist/public/build/js/89.6ea87438.chunk.js +0 -2
- package/dist/public/build/js/89.6ea87438.chunk.js.map +0 -1
- package/dist/public/build/js/main.f91e3651.js +0 -3
- /package/dist/public/build/js/{main.f91e3651.js.LICENSE.txt → main.4eb01db4.js.LICENSE.txt} +0 -0
@@ -0,0 +1,11 @@
|
|
1
|
+
import { getOAuthLogoutPath, isOAuthAllowed, isUserOAuthLogged } from '../components/oauth';
|
2
|
+
import { YTAuthLogout, isYtAuthEnabled } from '../components/yt-auth';
|
3
|
+
export function handleLogout(req, res) {
|
4
|
+
if (isOAuthAllowed(req) && isUserOAuthLogged(req)) {
|
5
|
+
res.redirect(getOAuthLogoutPath(req));
|
6
|
+
} else if (isYtAuthEnabled(req.ctx.config)) {
|
7
|
+
YTAuthLogout(res);
|
8
|
+
}
|
9
|
+
res.redirect('/');
|
10
|
+
}
|
11
|
+
// #sourceMappingURL=logout.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getOAuthLogoutPath","isOAuthAllowed","isUserOAuthLogged","YTAuthLogout","isYtAuthEnabled","handleLogout","req","res","redirect","ctx","config"],"sources":["logout.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {getOAuthLogoutPath, isOAuthAllowed, isUserOAuthLogged} from '../components/oauth';\nimport {YTAuthLogout, isYtAuthEnabled} from '../components/yt-auth';\n\nexport function handleLogout(req: Request, res: Response) {\n if (isOAuthAllowed(req) && isUserOAuthLogged(req)) {\n res.redirect(getOAuthLogoutPath(req));\n } else if (isYtAuthEnabled(req.ctx.config)) {\n YTAuthLogout(res);\n }\n res.redirect('/');\n}\n"],"mappings":"AACA,SAAQA,kBAAkB,EAAEC,cAAc,EAAEC,iBAAiB,QAAO,qBAAqB;AACzF,SAAQC,YAAY,EAAEC,eAAe,QAAO,uBAAuB;AAEnE,OAAO,SAASC,YAAYA,CAACC,GAAY,EAAEC,GAAa,EAAE;EACtD,IAAIN,cAAc,CAACK,GAAG,CAAC,IAAIJ,iBAAiB,CAACI,GAAG,CAAC,EAAE;IAC/CC,GAAG,CAACC,QAAQ,CAACR,kBAAkB,CAACM,GAAG,CAAC,CAAC;EACzC,CAAC,MAAM,IAAIF,eAAe,CAACE,GAAG,CAACG,GAAG,CAACC,MAAM,CAAC,EAAE;IACxCP,YAAY,CAACI,GAAG,CAAC;EACrB;EACAA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC;AACrB"}
|
@@ -0,0 +1,4 @@
|
|
1
|
+
import type { Request, Response } from 'express';
|
2
|
+
export declare function oauthLogin(req: Request, res: Response): void;
|
3
|
+
export declare function oauthLogout(_: Request, res: Response): void;
|
4
|
+
export declare function oauthCallback(req: Request, res: Response): Promise<void>;
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
3
|
+
import { exchangeOAuthToken, getOAuthLoginPath, removeOAuthCookies, saveOAuthTokensInCookies } from '../components/oauth';
|
4
|
+
export function oauthLogin(req, res) {
|
5
|
+
res.redirect(getOAuthLoginPath(req));
|
6
|
+
}
|
7
|
+
export function oauthLogout(_, res) {
|
8
|
+
removeOAuthCookies(res);
|
9
|
+
res.redirect('/');
|
10
|
+
}
|
11
|
+
export function oauthCallback(_x, _x2) {
|
12
|
+
return _oauthCallback.apply(this, arguments);
|
13
|
+
}
|
14
|
+
function _oauthCallback() {
|
15
|
+
_oauthCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res) {
|
16
|
+
var code, tokens, message;
|
17
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
18
|
+
while (1) switch (_context.prev = _context.next) {
|
19
|
+
case 0:
|
20
|
+
code = req.query.code;
|
21
|
+
if (code) {
|
22
|
+
_context.next = 3;
|
23
|
+
break;
|
24
|
+
}
|
25
|
+
throw new Error('Authorization code is not specified');
|
26
|
+
case 3:
|
27
|
+
_context.prev = 3;
|
28
|
+
_context.next = 6;
|
29
|
+
return exchangeOAuthToken(req, code);
|
30
|
+
case 6:
|
31
|
+
tokens = _context.sent;
|
32
|
+
saveOAuthTokensInCookies(res, tokens);
|
33
|
+
res.redirect('/');
|
34
|
+
_context.next = 16;
|
35
|
+
break;
|
36
|
+
case 11:
|
37
|
+
_context.prev = 11;
|
38
|
+
_context.t0 = _context["catch"](3);
|
39
|
+
req.ctx.logError('exchange token error', _context.t0);
|
40
|
+
message = _context.t0 instanceof Error ? _context.t0.message : 'Unknown error';
|
41
|
+
res.status(500).send(message);
|
42
|
+
case 16:
|
43
|
+
case "end":
|
44
|
+
return _context.stop();
|
45
|
+
}
|
46
|
+
}, _callee, null, [[3, 11]]);
|
47
|
+
}));
|
48
|
+
return _oauthCallback.apply(this, arguments);
|
49
|
+
}
|
50
|
+
// #sourceMappingURL=oauth-login.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["exchangeOAuthToken","getOAuthLoginPath","removeOAuthCookies","saveOAuthTokensInCookies","oauthLogin","req","res","redirect","oauthLogout","_","oauthCallback","_x","_x2","_oauthCallback","apply","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee","code","tokens","message","wrap","_callee$","_context","prev","next","query","Error","sent","t0","ctx","logError","status","send","stop"],"sources":["oauth-login.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {\n exchangeOAuthToken,\n getOAuthLoginPath,\n removeOAuthCookies,\n saveOAuthTokensInCookies,\n} from '../components/oauth';\n\nexport function oauthLogin(req: Request, res: Response) {\n res.redirect(getOAuthLoginPath(req));\n}\n\nexport function oauthLogout(_: Request, res: Response) {\n removeOAuthCookies(res);\n res.redirect('/');\n}\n\nexport async function oauthCallback(req: Request, res: Response) {\n const {code} = req.query;\n if (!code) {\n throw new Error('Authorization code is not specified');\n }\n\n try {\n const tokens = await exchangeOAuthToken(req, code as string);\n\n saveOAuthTokensInCookies(res, tokens);\n\n res.redirect('/');\n } catch (e) {\n req.ctx.logError('exchange token error', e);\n const message = e instanceof Error ? e.message : 'Unknown error';\n res.status(500).send(message);\n }\n}\n"],"mappings":";;AACA,SACIA,kBAAkB,EAClBC,iBAAiB,EACjBC,kBAAkB,EAClBC,wBAAwB,QACrB,qBAAqB;AAE5B,OAAO,SAASC,UAAUA,CAACC,GAAY,EAAEC,GAAa,EAAE;EACpDA,GAAG,CAACC,QAAQ,CAACN,iBAAiB,CAACI,GAAG,CAAC,CAAC;AACxC;AAEA,OAAO,SAASG,WAAWA,CAACC,CAAU,EAAEH,GAAa,EAAE;EACnDJ,kBAAkB,CAACI,GAAG,CAAC;EACvBA,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC;AACrB;AAEA,gBAAsBG,aAAaA,CAAAC,EAAA,EAAAC,GAAA;EAAA,OAAAC,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAiBlC,SAAAF,eAAA;EAAAA,cAAA,GAAAG,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAjBM,SAAAC,QAA6Bd,GAAY,EAAEC,GAAa;IAAA,IAAAc,IAAA,EAAAC,MAAA,EAAAC,OAAA;IAAA,OAAAL,mBAAA,CAAAM,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UACpDP,IAAI,GAAIf,GAAG,CAACuB,KAAK,CAAjBR,IAAI;UAAA,IACNA,IAAI;YAAAK,QAAA,CAAAE,IAAA;YAAA;UAAA;UAAA,MACC,IAAIE,KAAK,CAAC,qCAAqC,CAAC;QAAA;UAAAJ,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAE,IAAA;UAAA,OAIjC3B,kBAAkB,CAACK,GAAG,EAAEe,IAAc,CAAC;QAAA;UAAtDC,MAAM,GAAAI,QAAA,CAAAK,IAAA;UAEZ3B,wBAAwB,CAACG,GAAG,EAAEe,MAAM,CAAC;UAErCf,GAAG,CAACC,QAAQ,CAAC,GAAG,CAAC;UAACkB,QAAA,CAAAE,IAAA;UAAA;QAAA;UAAAF,QAAA,CAAAC,IAAA;UAAAD,QAAA,CAAAM,EAAA,GAAAN,QAAA;UAElBpB,GAAG,CAAC2B,GAAG,CAACC,QAAQ,CAAC,sBAAsB,EAAAR,QAAA,CAAAM,EAAG,CAAC;UACrCT,OAAO,GAAGG,QAAA,CAAAM,EAAA,YAAaF,KAAK,GAAGJ,QAAA,CAAAM,EAAA,CAAET,OAAO,GAAG,eAAe;UAChEhB,GAAG,CAAC4B,MAAM,CAAC,GAAG,CAAC,CAACC,IAAI,CAACb,OAAO,CAAC;QAAC;QAAA;UAAA,OAAAG,QAAA,CAAAW,IAAA;MAAA;IAAA,GAAAjB,OAAA;EAAA,CAErC;EAAA,OAAAN,cAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA"}
|
@@ -1,10 +1,14 @@
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
1
2
|
var _nodekit$config$adjus, _nodekit$config3;
|
2
3
|
import path from 'path';
|
3
4
|
import { NodeKit } from '@gravity-ui/nodekit';
|
4
5
|
import { ExpressKit } from '@gravity-ui/expresskit';
|
5
6
|
import { configureApp } from './configure-app';
|
6
|
-
import {
|
7
|
+
import { createYTAuthorizationResolver } from './middlewares/yt-auth';
|
7
8
|
import routes from './routes';
|
9
|
+
import { createOAuthAuthorizationResolver } from './middlewares/oauth';
|
10
|
+
import { createAuthMiddleware } from './middlewares/authorization';
|
11
|
+
import { authorizationResolver } from './utils/authorization';
|
8
12
|
var nodekit = new NodeKit({
|
9
13
|
configsPath: path.resolve(__dirname, './configs')
|
10
14
|
});
|
@@ -26,7 +30,8 @@ if (ytAuthCluster) {
|
|
26
30
|
if (appAuthHandler) {
|
27
31
|
nodekit.ctx.fail(new Error('"appAuthHandler" option will be ignored cause "ytAuthCluster" option is provided.'));
|
28
32
|
}
|
29
|
-
nodekit.config.
|
33
|
+
nodekit.config.appBeforeAuthMiddleware = [].concat(_toConsumableArray(nodekit.config.appBeforeAuthMiddleware || []), [authorizationResolver(createOAuthAuthorizationResolver()), authorizationResolver(createYTAuthorizationResolver())]);
|
34
|
+
nodekit.config.appAuthHandler = createAuthMiddleware(ytAuthCluster);
|
30
35
|
}
|
31
36
|
(_nodekit$config$adjus = (_nodekit$config3 = nodekit.config).adjustAppConfig) === null || _nodekit$config$adjus === void 0 || _nodekit$config$adjus.call(_nodekit$config3, nodekit);
|
32
37
|
var app = new ExpressKit(nodekit, routes);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["path","NodeKit","ExpressKit","configureApp","
|
1
|
+
{"version":3,"names":["path","NodeKit","ExpressKit","configureApp","createYTAuthorizationResolver","routes","createOAuthAuthorizationResolver","createAuthMiddleware","authorizationResolver","nodekit","configsPath","resolve","__dirname","_nodekit$config","config","appName","appEnv","appInstallation","appDevMode","ctx","log","_nodekit$config2","ytAuthCluster","appAuthHandler","fail","Error","appBeforeAuthMiddleware","concat","_toConsumableArray","_nodekit$config$adjus","_nodekit$config3","adjustAppConfig","call","app","require","main","module","run"],"sources":["index.ts"],"sourcesContent":["import path from 'path';\nimport _reduce from 'lodash/reduce';\nimport {NodeKit} from '@gravity-ui/nodekit';\nimport {ExpressKit} from '@gravity-ui/expresskit';\n\nimport {configureApp} from './configure-app';\n\nimport {createYTAuthorizationResolver} from './middlewares/yt-auth';\nimport routes from './routes';\nimport {createOAuthAuthorizationResolver} from './middlewares/oauth';\nimport {createAuthMiddleware} from './middlewares/authorization';\nimport {authorizationResolver} from './utils/authorization';\n\nconst nodekit = new NodeKit({configsPath: path.resolve(__dirname, './configs')});\n\nconst {appName, appEnv, appInstallation, appDevMode} = nodekit.config;\nnodekit.ctx.log('AppConfig details', {\n appName,\n appEnv,\n appInstallation,\n appDevMode,\n});\n\nconst {ytAuthCluster, appAuthHandler} = nodekit.config;\n\nif (ytAuthCluster) {\n if (appAuthHandler) {\n nodekit.ctx.fail(\n new Error(\n '\"appAuthHandler\" option will be ignored cause \"ytAuthCluster\" option is provided.',\n ),\n );\n }\n\n nodekit.config.appBeforeAuthMiddleware = [\n ...(nodekit.config.appBeforeAuthMiddleware || []),\n authorizationResolver(createOAuthAuthorizationResolver()),\n authorizationResolver(createYTAuthorizationResolver()),\n ];\n nodekit.config.appAuthHandler = createAuthMiddleware(ytAuthCluster);\n}\n\nnodekit.config.adjustAppConfig?.(nodekit);\n\nconst app = new ExpressKit(nodekit, routes);\nconfigureApp(app);\n\nif (require.main === module) {\n app.run();\n}\n\nexport default app;\n"],"mappings":";;AAAA,OAAOA,IAAI,MAAM,MAAM;AAEvB,SAAQC,OAAO,QAAO,qBAAqB;AAC3C,SAAQC,UAAU,QAAO,wBAAwB;AAEjD,SAAQC,YAAY,QAAO,iBAAiB;AAE5C,SAAQC,6BAA6B,QAAO,uBAAuB;AACnE,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAAQC,gCAAgC,QAAO,qBAAqB;AACpE,SAAQC,oBAAoB,QAAO,6BAA6B;AAChE,SAAQC,qBAAqB,QAAO,uBAAuB;AAE3D,IAAMC,OAAO,GAAG,IAAIR,OAAO,CAAC;EAACS,WAAW,EAAEV,IAAI,CAACW,OAAO,CAACC,SAAS,EAAE,WAAW;AAAC,CAAC,CAAC;AAEhF,IAAAC,eAAA,GAAuDJ,OAAO,CAACK,MAAM;EAA9DC,OAAO,GAAAF,eAAA,CAAPE,OAAO;EAAEC,MAAM,GAAAH,eAAA,CAANG,MAAM;EAAEC,eAAe,GAAAJ,eAAA,CAAfI,eAAe;EAAEC,UAAU,GAAAL,eAAA,CAAVK,UAAU;AACnDT,OAAO,CAACU,GAAG,CAACC,GAAG,CAAC,mBAAmB,EAAE;EACjCL,OAAO,EAAPA,OAAO;EACPC,MAAM,EAANA,MAAM;EACNC,eAAe,EAAfA,eAAe;EACfC,UAAU,EAAVA;AACJ,CAAC,CAAC;AAEF,IAAAG,gBAAA,GAAwCZ,OAAO,CAACK,MAAM;EAA/CQ,aAAa,GAAAD,gBAAA,CAAbC,aAAa;EAAEC,cAAc,GAAAF,gBAAA,CAAdE,cAAc;AAEpC,IAAID,aAAa,EAAE;EACf,IAAIC,cAAc,EAAE;IAChBd,OAAO,CAACU,GAAG,CAACK,IAAI,CACZ,IAAIC,KAAK,CACL,mFACJ,CACJ,CAAC;EACL;EAEAhB,OAAO,CAACK,MAAM,CAACY,uBAAuB,MAAAC,MAAA,CAAAC,kBAAA,CAC9BnB,OAAO,CAACK,MAAM,CAACY,uBAAuB,IAAI,EAAE,IAChDlB,qBAAqB,CAACF,gCAAgC,CAAC,CAAC,CAAC,EACzDE,qBAAqB,CAACJ,6BAA6B,CAAC,CAAC,CAAC,EACzD;EACDK,OAAO,CAACK,MAAM,CAACS,cAAc,GAAGhB,oBAAoB,CAACe,aAAa,CAAC;AACvE;AAEA,CAAAO,qBAAA,IAAAC,gBAAA,GAAArB,OAAO,CAACK,MAAM,EAACiB,eAAe,cAAAF,qBAAA,eAA9BA,qBAAA,CAAAG,IAAA,CAAAF,gBAAA,EAAiCrB,OAAO,CAAC;AAEzC,IAAMwB,GAAG,GAAG,IAAI/B,UAAU,CAACO,OAAO,EAAEJ,MAAM,CAAC;AAC3CF,YAAY,CAAC8B,GAAG,CAAC;AAEjB,IAAIC,OAAO,CAACC,IAAI,KAAKC,MAAM,EAAE;EACzBH,GAAG,CAACI,GAAG,CAAC,CAAC;AACb;AAEA,eAAeJ,GAAG"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
3
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
4
|
+
import _inherits from "@babel/runtime/helpers/inherits";
|
5
|
+
import _createSuper from "@babel/runtime/helpers/createSuper";
|
6
|
+
import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
|
7
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
8
|
+
import axios from 'axios';
|
9
|
+
import { isAuthorized } from '../utils/authorization';
|
10
|
+
import { getUserYTApiSetup } from '../components/requestsSetup';
|
11
|
+
import { getXSRFToken } from '../components/cluster-queries';
|
12
|
+
import { sendError } from '../utils';
|
13
|
+
var AuthError = /*#__PURE__*/function (_Error) {
|
14
|
+
_inherits(AuthError, _Error);
|
15
|
+
var _super = _createSuper(AuthError);
|
16
|
+
function AuthError() {
|
17
|
+
_classCallCheck(this, AuthError);
|
18
|
+
return _super.call(this, 'Authorization required');
|
19
|
+
}
|
20
|
+
return _createClass(AuthError);
|
21
|
+
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
22
|
+
function isAuthError(e) {
|
23
|
+
var _e$response;
|
24
|
+
return e instanceof AuthError || axios.isAxiosError(e) && ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status) === 401;
|
25
|
+
}
|
26
|
+
export function createAuthMiddleware(ytAuthCluster) {
|
27
|
+
return /*#__PURE__*/function () {
|
28
|
+
var _authMiddleware = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
|
29
|
+
var cfg, _yield$getXSRFToken, login, isAuthFailed, error;
|
30
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
31
|
+
while (1) switch (_context.prev = _context.next) {
|
32
|
+
case 0:
|
33
|
+
_context.prev = 0;
|
34
|
+
if (isAuthorized(req)) {
|
35
|
+
_context.next = 3;
|
36
|
+
break;
|
37
|
+
}
|
38
|
+
throw new AuthError();
|
39
|
+
case 3:
|
40
|
+
cfg = getUserYTApiSetup(ytAuthCluster, req);
|
41
|
+
_context.next = 6;
|
42
|
+
return getXSRFToken(req, cfg);
|
43
|
+
case 6:
|
44
|
+
_yield$getXSRFToken = _context.sent;
|
45
|
+
login = _yield$getXSRFToken.login;
|
46
|
+
req.yt.login = login;
|
47
|
+
_context.next = 18;
|
48
|
+
break;
|
49
|
+
case 11:
|
50
|
+
_context.prev = 11;
|
51
|
+
_context.t0 = _context["catch"](0);
|
52
|
+
isAuthFailed = isAuthError(_context.t0);
|
53
|
+
error = isAuthFailed ? undefined : _context.t0;
|
54
|
+
if (!(!req.routeInfo.ui && isAuthFailed)) {
|
55
|
+
_context.next = 18;
|
56
|
+
break;
|
57
|
+
}
|
58
|
+
sendError(res, error, 401);
|
59
|
+
return _context.abrupt("return");
|
60
|
+
case 18:
|
61
|
+
next();
|
62
|
+
case 19:
|
63
|
+
case "end":
|
64
|
+
return _context.stop();
|
65
|
+
}
|
66
|
+
}, _callee, null, [[0, 11]]);
|
67
|
+
}));
|
68
|
+
function authMiddleware(_x, _x2, _x3) {
|
69
|
+
return _authMiddleware.apply(this, arguments);
|
70
|
+
}
|
71
|
+
return authMiddleware;
|
72
|
+
}();
|
73
|
+
}
|
74
|
+
// #sourceMappingURL=authorization.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["axios","isAuthorized","getUserYTApiSetup","getXSRFToken","sendError","AuthError","_Error","_inherits","_super","_createSuper","_classCallCheck","call","_createClass","_wrapNativeSuper","Error","isAuthError","e","_e$response","isAxiosError","response","status","createAuthMiddleware","ytAuthCluster","_authMiddleware","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","cfg","_yield$getXSRFToken","login","isAuthFailed","error","wrap","_callee$","_context","prev","sent","yt","t0","undefined","routeInfo","ui","abrupt","stop","authMiddleware","_x","_x2","_x3","apply","arguments"],"sources":["authorization.ts"],"sourcesContent":["import axios from 'axios';\nimport {isAuthorized} from '../utils/authorization';\nimport {getUserYTApiSetup} from '../components/requestsSetup';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {getXSRFToken} from '../components/cluster-queries';\nimport {sendError} from '../utils';\n\nclass AuthError extends Error {\n constructor() {\n super('Authorization required');\n }\n}\n\nfunction isAuthError(e: unknown) {\n return e instanceof AuthError || (axios.isAxiosError(e) && e.response?.status === 401);\n}\n\nexport function createAuthMiddleware(ytAuthCluster: string): AppMiddleware {\n return async function authMiddleware(req, res, next) {\n try {\n if (!isAuthorized(req)) {\n throw new AuthError();\n }\n\n const cfg = getUserYTApiSetup(ytAuthCluster, req);\n const {login} = await getXSRFToken(req, cfg);\n req.yt.login = login;\n } catch (e) {\n const isAuthFailed = isAuthError(e);\n const error = isAuthFailed ? undefined : e;\n\n if (!req.routeInfo.ui && isAuthFailed) {\n sendError(res, error, 401);\n return;\n }\n }\n\n next();\n };\n}\n"],"mappings":";;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAQC,YAAY,QAAO,wBAAwB;AACnD,SAAQC,iBAAiB,QAAO,6BAA6B;AAE7D,SAAQC,YAAY,QAAO,+BAA+B;AAC1D,SAAQC,SAAS,QAAO,UAAU;AAAC,IAE7BC,SAAS,0BAAAC,MAAA;EAAAC,SAAA,CAAAF,SAAA,EAAAC,MAAA;EAAA,IAAAE,MAAA,GAAAC,YAAA,CAAAJ,SAAA;EACX,SAAAA,UAAA,EAAc;IAAAK,eAAA,OAAAL,SAAA;IAAA,OAAAG,MAAA,CAAAG,IAAA,OACJ,wBAAwB;EAClC;EAAC,OAAAC,YAAA,CAAAP,SAAA;AAAA,gBAAAQ,gBAAA,CAHmBC,KAAK;AAM7B,SAASC,WAAWA,CAACC,CAAU,EAAE;EAAA,IAAAC,WAAA;EAC7B,OAAOD,CAAC,YAAYX,SAAS,IAAKL,KAAK,CAACkB,YAAY,CAACF,CAAC,CAAC,IAAI,EAAAC,WAAA,GAAAD,CAAC,CAACG,QAAQ,cAAAF,WAAA,uBAAVA,WAAA,CAAYG,MAAM,MAAK,GAAI;AAC1F;AAEA,OAAO,SAASC,oBAAoBA,CAACC,aAAqB,EAAiB;EACvE;IAAA,IAAAC,eAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAA8BC,GAAG,EAAEC,GAAG,EAAEC,IAAI;MAAA,IAAAC,GAAA,EAAAC,mBAAA,EAAAC,KAAA,EAAAC,YAAA,EAAAC,KAAA;MAAA,OAAAV,mBAAA,CAAAW,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAR,IAAA;UAAA;YAAAQ,QAAA,CAAAC,IAAA;YAAA,IAEtCtC,YAAY,CAAC2B,GAAG,CAAC;cAAAU,QAAA,CAAAR,IAAA;cAAA;YAAA;YAAA,MACZ,IAAIzB,SAAS,CAAC,CAAC;UAAA;YAGnB0B,GAAG,GAAG7B,iBAAiB,CAACoB,aAAa,EAAEM,GAAG,CAAC;YAAAU,QAAA,CAAAR,IAAA;YAAA,OAC3B3B,YAAY,CAACyB,GAAG,EAAEG,GAAG,CAAC;UAAA;YAAAC,mBAAA,GAAAM,QAAA,CAAAE,IAAA;YAArCP,KAAK,GAAAD,mBAAA,CAALC,KAAK;YACZL,GAAG,CAACa,EAAE,CAACR,KAAK,GAAGA,KAAK;YAACK,QAAA,CAAAR,IAAA;YAAA;UAAA;YAAAQ,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAI,EAAA,GAAAJ,QAAA;YAEfJ,YAAY,GAAGnB,WAAW,CAAAuB,QAAA,CAAAI,EAAE,CAAC;YAC7BP,KAAK,GAAGD,YAAY,GAAGS,SAAS,GAAAL,QAAA,CAAAI,EAAI;YAAA,MAEtC,CAACd,GAAG,CAACgB,SAAS,CAACC,EAAE,IAAIX,YAAY;cAAAI,QAAA,CAAAR,IAAA;cAAA;YAAA;YACjC1B,SAAS,CAACyB,GAAG,EAAEM,KAAK,EAAE,GAAG,CAAC;YAAC,OAAAG,QAAA,CAAAQ,MAAA;UAAA;YAKnChB,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAQ,QAAA,CAAAS,IAAA;QAAA;MAAA,GAAApB,OAAA;IAAA,CACV;IAAA,SApBqBqB,cAAcA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAA5B,eAAA,CAAA6B,KAAA,OAAAC,SAAA;IAAA;IAAA,OAAdL,cAAc;EAAA;AAqBxC"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
3
|
+
import { getOAuthAccessToken, isOAuthAllowed, isUserOAuthLogged } from '../components/oauth';
|
4
|
+
export function createOAuthAuthorizationResolver() {
|
5
|
+
return /*#__PURE__*/function () {
|
6
|
+
var _resoleOAuthAuthorize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, res, next) {
|
7
|
+
var token;
|
8
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
9
|
+
while (1) switch (_context.prev = _context.next) {
|
10
|
+
case 0:
|
11
|
+
if (!(!isOAuthAllowed(req) || !isUserOAuthLogged(req))) {
|
12
|
+
_context.next = 3;
|
13
|
+
break;
|
14
|
+
}
|
15
|
+
next();
|
16
|
+
return _context.abrupt("return");
|
17
|
+
case 3:
|
18
|
+
_context.prev = 3;
|
19
|
+
_context.next = 6;
|
20
|
+
return getOAuthAccessToken(req, res);
|
21
|
+
case 6:
|
22
|
+
token = _context.sent;
|
23
|
+
req.yt = {
|
24
|
+
ytApiAuthHeaders: {
|
25
|
+
Authorization: "OAuth ".concat(token)
|
26
|
+
}
|
27
|
+
};
|
28
|
+
req.ctx.log('OAuth: provide a token');
|
29
|
+
_context.next = 14;
|
30
|
+
break;
|
31
|
+
case 11:
|
32
|
+
_context.prev = 11;
|
33
|
+
_context.t0 = _context["catch"](3);
|
34
|
+
req.ctx.logError('Can not resolve access token', _context.t0);
|
35
|
+
case 14:
|
36
|
+
next();
|
37
|
+
return _context.abrupt("return");
|
38
|
+
case 16:
|
39
|
+
case "end":
|
40
|
+
return _context.stop();
|
41
|
+
}
|
42
|
+
}, _callee, null, [[3, 11]]);
|
43
|
+
}));
|
44
|
+
function resoleOAuthAuthorize(_x, _x2, _x3) {
|
45
|
+
return _resoleOAuthAuthorize.apply(this, arguments);
|
46
|
+
}
|
47
|
+
return resoleOAuthAuthorize;
|
48
|
+
}();
|
49
|
+
}
|
50
|
+
// #sourceMappingURL=oauth.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["getOAuthAccessToken","isOAuthAllowed","isUserOAuthLogged","createOAuthAuthorizationResolver","_resoleOAuthAuthorize","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","res","next","token","wrap","_callee$","_context","prev","abrupt","sent","yt","ytApiAuthHeaders","Authorization","concat","ctx","log","t0","logError","stop","resoleOAuthAuthorize","_x","_x2","_x3","apply","arguments"],"sources":["oauth.ts"],"sourcesContent":["import {AppMiddleware} from '@gravity-ui/expresskit';\nimport type {Request, Response} from 'express';\nimport {getOAuthAccessToken, isOAuthAllowed, isUserOAuthLogged} from '../components/oauth';\n\nexport function createOAuthAuthorizationResolver(): AppMiddleware {\n return async function resoleOAuthAuthorize(req: Request, res: Response, next) {\n if (!isOAuthAllowed(req) || !isUserOAuthLogged(req)) {\n next();\n return;\n }\n try {\n const token = await getOAuthAccessToken(req, res);\n req.yt = {\n ytApiAuthHeaders: {\n Authorization: `OAuth ${token}`,\n },\n };\n req.ctx.log('OAuth: provide a token');\n } catch (e) {\n req.ctx.logError('Can not resolve access token', e);\n }\n next();\n return;\n };\n}\n"],"mappings":";;AAEA,SAAQA,mBAAmB,EAAEC,cAAc,EAAEC,iBAAiB,QAAO,qBAAqB;AAE1F,OAAO,SAASC,gCAAgCA,CAAA,EAAkB;EAC9D;IAAA,IAAAC,qBAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAoCC,GAAY,EAAEC,GAAa,EAAEC,IAAI;MAAA,IAAAC,KAAA;MAAA,OAAAN,mBAAA,CAAAO,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAJ,IAAA;UAAA;YAAA,MACpE,CAACV,cAAc,CAACQ,GAAG,CAAC,IAAI,CAACP,iBAAiB,CAACO,GAAG,CAAC;cAAAM,QAAA,CAAAJ,IAAA;cAAA;YAAA;YAC/CA,IAAI,CAAC,CAAC;YAAC,OAAAI,QAAA,CAAAE,MAAA;UAAA;YAAAF,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAJ,IAAA;YAAA,OAIaX,mBAAmB,CAACS,GAAG,EAAEC,GAAG,CAAC;UAAA;YAA3CE,KAAK,GAAAG,QAAA,CAAAG,IAAA;YACXT,GAAG,CAACU,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,aAAa,WAAAC,MAAA,CAAWV,KAAK;cACjC;YACJ,CAAC;YACDH,GAAG,CAACc,GAAG,CAACC,GAAG,CAAC,wBAAwB,CAAC;YAACT,QAAA,CAAAJ,IAAA;YAAA;UAAA;YAAAI,QAAA,CAAAC,IAAA;YAAAD,QAAA,CAAAU,EAAA,GAAAV,QAAA;YAEtCN,GAAG,CAACc,GAAG,CAACG,QAAQ,CAAC,8BAA8B,EAAAX,QAAA,CAAAU,EAAG,CAAC;UAAC;YAExDd,IAAI,CAAC,CAAC;YAAC,OAAAI,QAAA,CAAAE,MAAA;UAAA;UAAA;YAAA,OAAAF,QAAA,CAAAY,IAAA;QAAA;MAAA,GAAAnB,OAAA;IAAA,CAEV;IAAA,SAlBqBoB,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAA3B,qBAAA,CAAA4B,KAAA,OAAAC,SAAA;IAAA;IAAA,OAApBL,oBAAoB;EAAA;AAmB9C"}
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { AppMiddleware } from '@gravity-ui/expresskit';
|
2
|
-
export declare function
|
2
|
+
export declare function createYTAuthorizationResolver(): AppMiddleware;
|
@@ -1,80 +1,30 @@
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
3
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
4
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
5
|
-
import _createSuper from "@babel/runtime/helpers/createSuper";
|
6
|
-
import _wrapNativeSuper from "@babel/runtime/helpers/wrapNativeSuper";
|
7
2
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
8
|
-
import axios from 'axios';
|
9
3
|
import { YT_CYPRESS_COOKIE_NAME } from '../../shared/constants';
|
10
|
-
|
11
|
-
import { getUserYTApiSetup } from '../components/requestsSetup';
|
12
|
-
import { sendError } from '../utils';
|
13
|
-
var AuthError = /*#__PURE__*/function (_Error) {
|
14
|
-
_inherits(AuthError, _Error);
|
15
|
-
var _super = _createSuper(AuthError);
|
16
|
-
function AuthError() {
|
17
|
-
_classCallCheck(this, AuthError);
|
18
|
-
return _super.call(this, 'Authorization required');
|
19
|
-
}
|
20
|
-
return _createClass(AuthError);
|
21
|
-
}( /*#__PURE__*/_wrapNativeSuper(Error));
|
22
|
-
function isAuthError(e) {
|
23
|
-
var _e$response;
|
24
|
-
return e instanceof AuthError || axios.isAxiosError(e) && ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : _e$response.status) === 401;
|
25
|
-
}
|
26
|
-
export function createYTAuthMiddleware(ytAuthCluster) {
|
4
|
+
export function createYTAuthorizationResolver() {
|
27
5
|
return /*#__PURE__*/function () {
|
28
|
-
var
|
29
|
-
var secret
|
6
|
+
var _resoleOAuthAuthorize = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(req, _, next) {
|
7
|
+
var secret;
|
30
8
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
31
9
|
while (1) switch (_context.prev = _context.next) {
|
32
10
|
case 0:
|
33
|
-
_context.prev = 0;
|
34
11
|
secret = req.cookies[YT_CYPRESS_COOKIE_NAME];
|
35
12
|
req.yt = {
|
36
13
|
ytApiAuthHeaders: {
|
37
14
|
Cookie: "".concat(YT_CYPRESS_COOKIE_NAME, "=").concat(secret, ";")
|
38
15
|
}
|
39
16
|
};
|
40
|
-
if (secret) {
|
41
|
-
_context.next = 5;
|
42
|
-
break;
|
43
|
-
}
|
44
|
-
throw new AuthError();
|
45
|
-
case 5:
|
46
|
-
cfg = getUserYTApiSetup(ytAuthCluster, req);
|
47
|
-
_context.next = 8;
|
48
|
-
return getXSRFToken(req, cfg);
|
49
|
-
case 8:
|
50
|
-
_yield$getXSRFToken = _context.sent;
|
51
|
-
login = _yield$getXSRFToken.login;
|
52
|
-
req.yt.login = login;
|
53
|
-
_context.next = 20;
|
54
|
-
break;
|
55
|
-
case 13:
|
56
|
-
_context.prev = 13;
|
57
|
-
_context.t0 = _context["catch"](0);
|
58
|
-
isAuthFailed = isAuthError(_context.t0);
|
59
|
-
error = isAuthFailed ? undefined : _context.t0;
|
60
|
-
if (!(!req.routeInfo.ui && isAuthFailed)) {
|
61
|
-
_context.next = 20;
|
62
|
-
break;
|
63
|
-
}
|
64
|
-
sendError(res, error, 401);
|
65
|
-
return _context.abrupt("return");
|
66
|
-
case 20:
|
67
17
|
next();
|
68
|
-
case
|
18
|
+
case 3:
|
69
19
|
case "end":
|
70
20
|
return _context.stop();
|
71
21
|
}
|
72
|
-
}, _callee
|
22
|
+
}, _callee);
|
73
23
|
}));
|
74
|
-
function
|
75
|
-
return
|
24
|
+
function resoleOAuthAuthorize(_x, _x2, _x3) {
|
25
|
+
return _resoleOAuthAuthorize.apply(this, arguments);
|
76
26
|
}
|
77
|
-
return
|
27
|
+
return resoleOAuthAuthorize;
|
78
28
|
}();
|
79
29
|
}
|
80
30
|
// #sourceMappingURL=yt-auth.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["
|
1
|
+
{"version":3,"names":["YT_CYPRESS_COOKIE_NAME","createYTAuthorizationResolver","_resoleOAuthAuthorize","_asyncToGenerator","_regeneratorRuntime","mark","_callee","req","_","next","secret","wrap","_callee$","_context","prev","cookies","yt","ytApiAuthHeaders","Cookie","concat","stop","resoleOAuthAuthorize","_x","_x2","_x3","apply","arguments"],"sources":["yt-auth.ts"],"sourcesContent":["import type {Request, Response} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {YT_CYPRESS_COOKIE_NAME} from '../../shared/constants';\n\nexport function createYTAuthorizationResolver(): AppMiddleware {\n return async function resoleOAuthAuthorize(req: Request, _: Response, next) {\n const secret: string = req.cookies[YT_CYPRESS_COOKIE_NAME];\n req.yt = {\n ytApiAuthHeaders: {\n Cookie: `${YT_CYPRESS_COOKIE_NAME}=${secret};`,\n },\n };\n next();\n };\n}\n"],"mappings":";;AAEA,SAAQA,sBAAsB,QAAO,wBAAwB;AAE7D,OAAO,SAASC,6BAA6BA,CAAA,EAAkB;EAC3D;IAAA,IAAAC,qBAAA,GAAAC,iBAAA,eAAAC,mBAAA,CAAAC,IAAA,CAAO,SAAAC,QAAoCC,GAAY,EAAEC,CAAW,EAAEC,IAAI;MAAA,IAAAC,MAAA;MAAA,OAAAN,mBAAA,CAAAO,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAJ,IAAA;UAAA;YAChEC,MAAc,GAAGH,GAAG,CAACQ,OAAO,CAACf,sBAAsB,CAAC;YAC1DO,GAAG,CAACS,EAAE,GAAG;cACLC,gBAAgB,EAAE;gBACdC,MAAM,KAAAC,MAAA,CAAKnB,sBAAsB,OAAAmB,MAAA,CAAIT,MAAM;cAC/C;YACJ,CAAC;YACDD,IAAI,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAI,QAAA,CAAAO,IAAA;QAAA;MAAA,GAAAd,OAAA;IAAA,CACV;IAAA,SARqBe,oBAAoBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA;MAAA,OAAAtB,qBAAA,CAAAuB,KAAA,OAAAC,SAAA;IAAA;IAAA,OAApBL,oBAAoB;EAAA;AAS9C"}
|
@@ -9,12 +9,14 @@ import { handleClusterInfo } from './controllers/cluster-info';
|
|
9
9
|
import { clusterVersions } from './controllers/clusters';
|
10
10
|
import { tableColumnPresetGet, tableColumnPresetSave } from './controllers/table-column-preset';
|
11
11
|
import { ping } from './controllers/ping';
|
12
|
-
import { handleChangePassword, handleLogin
|
12
|
+
import { handleChangePassword, handleLogin } from './controllers/login';
|
13
13
|
import { getClusterPools } from './controllers/scheduling-pools';
|
14
14
|
import { markdownToHtmlHandler } from './controllers/markdown-to-html';
|
15
15
|
import { odinProxyApi } from './controllers/odin-proxy-api';
|
16
16
|
import { getClustersAvailability } from './controllers/availability';
|
17
17
|
import { chytProxyApi } from './controllers/chyt-api';
|
18
|
+
import { oauthCallback, oauthLogin, oauthLogout } from './controllers/oauth-login';
|
19
|
+
import { handleLogout } from './controllers/logout';
|
18
20
|
var HOME_INDEX_TARGET = {
|
19
21
|
handler: homeIndex,
|
20
22
|
ui: true
|
@@ -42,10 +44,22 @@ var routes = {
|
|
42
44
|
handler: handleLogin,
|
43
45
|
ui: true
|
44
46
|
},
|
45
|
-
'
|
47
|
+
'GET /api/yt/logout': {
|
46
48
|
handler: handleLogout,
|
47
49
|
ui: true
|
48
50
|
},
|
51
|
+
'GET /oauth/login': {
|
52
|
+
handler: oauthLogin,
|
53
|
+
ui: true
|
54
|
+
},
|
55
|
+
'GET /api/oauth/callback': {
|
56
|
+
handler: oauthCallback,
|
57
|
+
ui: true
|
58
|
+
},
|
59
|
+
'GET /api/oauth/logout/callback': {
|
60
|
+
handler: oauthLogout,
|
61
|
+
ui: true
|
62
|
+
},
|
49
63
|
'POST /api/yt/change-password': {
|
50
64
|
handler: handleChangePassword,
|
51
65
|
ui: true
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["AuthPolicy","clusterParams","ytTvmApiHandler","handleRemoteCopy","ytProxyApi","settingsCreate","settingsDeleteItem","settingsGet","settingsGetItem","settingsSetItem","homeIndex","homeRedirect","handleClusterInfo","clusterVersions","tableColumnPresetGet","tableColumnPresetSave","ping","handleChangePassword","handleLogin","
|
1
|
+
{"version":3,"names":["AuthPolicy","clusterParams","ytTvmApiHandler","handleRemoteCopy","ytProxyApi","settingsCreate","settingsDeleteItem","settingsGet","settingsGetItem","settingsSetItem","homeIndex","homeRedirect","handleClusterInfo","clusterVersions","tableColumnPresetGet","tableColumnPresetSave","ping","handleChangePassword","handleLogin","getClusterPools","markdownToHtmlHandler","odinProxyApi","getClustersAvailability","chytProxyApi","oauthCallback","oauthLogin","oauthLogout","handleLogout","HOME_INDEX_TARGET","handler","ui","routes","authPolicy","disabled"],"sources":["routes.ts"],"sourcesContent":["import {AppRouteDescription, AppRoutes, AuthPolicy} from '@gravity-ui/expresskit';\nimport {clusterParams} from './controllers/cluster-params';\nimport {ytTvmApiHandler} from './controllers/yt-api';\nimport {handleRemoteCopy} from './controllers/remote-copy';\nimport {ytProxyApi} from './controllers/yt-proxy-api';\nimport {\n settingsCreate,\n settingsDeleteItem,\n settingsGet,\n settingsGetItem,\n settingsSetItem,\n} from './controllers/settings';\nimport {homeIndex, homeRedirect} from './controllers/home';\nimport {handleClusterInfo} from './controllers/cluster-info';\n\nimport {clusterVersions} from './controllers/clusters';\nimport {tableColumnPresetGet, tableColumnPresetSave} from './controllers/table-column-preset';\nimport {ping} from './controllers/ping';\nimport {handleChangePassword, handleLogin} from './controllers/login';\nimport {getClusterPools} from './controllers/scheduling-pools';\nimport {markdownToHtmlHandler} from './controllers/markdown-to-html';\nimport {odinProxyApi} from './controllers/odin-proxy-api';\nimport {getClustersAvailability} from './controllers/availability';\nimport {chytProxyApi} from './controllers/chyt-api';\nimport {oauthCallback, oauthLogin, oauthLogout} from './controllers/oauth-login';\nimport {handleLogout} from './controllers/logout';\n\nconst HOME_INDEX_TARGET: AppRouteDescription = {handler: homeIndex, ui: true};\n\nconst routes: AppRoutes = {\n 'GET /change-password/': HOME_INDEX_TARGET,\n 'GET /': HOME_INDEX_TARGET,\n 'GET /ping': {handler: ping, authPolicy: AuthPolicy.disabled},\n 'GET /api/cluster-info/:cluster': {handler: handleClusterInfo},\n 'GET /api/cluster-params/:cluster': {handler: clusterParams},\n 'GET /api/clusters/versions': {handler: clusterVersions},\n 'GET /api/pool-names/:cluster': {handler: getClusterPools},\n 'POST /api/yt/login': {handler: handleLogin, ui: true},\n 'GET /api/yt/logout': {handler: handleLogout, ui: true},\n\n 'GET /oauth/login': {handler: oauthLogin, ui: true},\n 'GET /api/oauth/callback': {handler: oauthCallback, ui: true},\n 'GET /api/oauth/logout/callback': {handler: oauthLogout, ui: true},\n\n 'POST /api/yt/change-password': {handler: handleChangePassword, ui: true},\n 'POST /api/remote-copy': {handler: handleRemoteCopy},\n\n 'POST /api/markdown-to-html': {handler: markdownToHtmlHandler},\n\n 'GET /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'POST /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n 'PUT /api/yt/:cluster/api/:version/:command': {handler: ytTvmApiHandler},\n\n 'GET /api/yt-proxy/:cluster/:command': {handler: ytProxyApi},\n\n 'GET /api/odin/proxy/:action/:cluster?': {handler: odinProxyApi},\n 'GET /api/odin/clusters/availability': {handler: getClustersAvailability},\n\n 'POST /api/chyt/:cluster/:action': {handler: chytProxyApi},\n\n 'GET /api/settings/:username': {handler: settingsGet},\n 'POST /api/settings/:username': {handler: settingsCreate},\n 'GET /api/settings/:username/:path': {handler: settingsGetItem},\n 'PUT /api/settings/:username/:path': {handler: settingsSetItem},\n 'DELETE /api/settings/:username/:path': {handler: settingsDeleteItem},\n\n 'GET /api/table-column-preset/:hash': {\n handler: tableColumnPresetGet,\n },\n 'POST /api/table-column-preset': {handler: tableColumnPresetSave},\n\n 'GET /:cluster/': HOME_INDEX_TARGET,\n 'GET /:cluster/maintenance': {handler: homeRedirect},\n 'GET /:cluster/:page': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:tab': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:operation/:tab': HOME_INDEX_TARGET,\n 'GET /:cluster/:page/:operation/:job/:tab': HOME_INDEX_TARGET,\n};\n\nexport default routes;\n"],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import type { Request } from 'express';
|
2
|
+
import { AppMiddleware } from '@gravity-ui/expresskit';
|
3
|
+
import { AuthWay } from '../../shared/constants';
|
4
|
+
export declare function isAuthorized(req: Request): boolean;
|
5
|
+
export declare function getAuthWay(req: Request): AuthWay | undefined;
|
6
|
+
export declare function authorizationResolver(resolver: AppMiddleware): AppMiddleware;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import { isUserOAuthLogged } from '../components/oauth';
|
2
|
+
export function isAuthorized(req) {
|
3
|
+
if (req.yt) {
|
4
|
+
var _req$yt$ytApiAuthHead;
|
5
|
+
return Boolean(Object.keys((_req$yt$ytApiAuthHead = req.yt.ytApiAuthHeaders) !== null && _req$yt$ytApiAuthHead !== void 0 ? _req$yt$ytApiAuthHead : {}));
|
6
|
+
}
|
7
|
+
return false;
|
8
|
+
}
|
9
|
+
export function getAuthWay(req) {
|
10
|
+
if (!isAuthorized(req)) {
|
11
|
+
return undefined;
|
12
|
+
}
|
13
|
+
if (isUserOAuthLogged(req)) {
|
14
|
+
return 'oauth';
|
15
|
+
}
|
16
|
+
return 'passwd';
|
17
|
+
}
|
18
|
+
export function authorizationResolver(resolver) {
|
19
|
+
return function (req, res, next) {
|
20
|
+
if (isAuthorized(req)) {
|
21
|
+
next();
|
22
|
+
return;
|
23
|
+
}
|
24
|
+
resolver(req, res, next);
|
25
|
+
return;
|
26
|
+
};
|
27
|
+
}
|
28
|
+
// #sourceMappingURL=authorization.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["isUserOAuthLogged","isAuthorized","req","yt","_req$yt$ytApiAuthHead","Boolean","Object","keys","ytApiAuthHeaders","getAuthWay","undefined","authorizationResolver","resolver","res","next"],"sources":["authorization.ts"],"sourcesContent":["import type {Request} from 'express';\nimport {AppMiddleware} from '@gravity-ui/expresskit';\nimport {AuthWay} from '../../shared/constants';\nimport {isUserOAuthLogged} from '../components/oauth';\n\nexport function isAuthorized(req: Request) {\n if (req.yt) {\n return Boolean(Object.keys(req.yt.ytApiAuthHeaders ?? {}));\n }\n return false;\n}\n\nexport function getAuthWay(req: Request): AuthWay | undefined {\n if (!isAuthorized(req)) {\n return undefined;\n }\n if (isUserOAuthLogged(req)) {\n return 'oauth';\n }\n return 'passwd';\n}\n\nexport function authorizationResolver(resolver: AppMiddleware): AppMiddleware {\n return (req, res, next) => {\n if (isAuthorized(req)) {\n next();\n return;\n }\n resolver(req, res, next);\n return;\n };\n}\n"],"mappings":"AAGA,SAAQA,iBAAiB,QAAO,qBAAqB;AAErD,OAAO,SAASC,YAAYA,CAACC,GAAY,EAAE;EACvC,IAAIA,GAAG,CAACC,EAAE,EAAE;IAAA,IAAAC,qBAAA;IACR,OAAOC,OAAO,CAACC,MAAM,CAACC,IAAI,EAAAH,qBAAA,GAACF,GAAG,CAACC,EAAE,CAACK,gBAAgB,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAAC,CAAC;EAC9D;EACA,OAAO,KAAK;AAChB;AAEA,OAAO,SAASK,UAAUA,CAACP,GAAY,EAAuB;EAC1D,IAAI,CAACD,YAAY,CAACC,GAAG,CAAC,EAAE;IACpB,OAAOQ,SAAS;EACpB;EACA,IAAIV,iBAAiB,CAACE,GAAG,CAAC,EAAE;IACxB,OAAO,OAAO;EAClB;EACA,OAAO,QAAQ;AACnB;AAEA,OAAO,SAASS,qBAAqBA,CAACC,QAAuB,EAAiB;EAC1E,OAAO,UAACV,GAAG,EAAEW,GAAG,EAAEC,IAAI,EAAK;IACvB,IAAIb,YAAY,CAACC,GAAG,CAAC,EAAE;MACnBY,IAAI,CAAC,CAAC;MACN;IACJ;IACAF,QAAQ,CAACV,GAAG,EAAEW,GAAG,EAAEC,IAAI,CAAC;IACxB;EACJ,CAAC;AACL"}
|
@@ -2,6 +2,9 @@ export declare const YT_API_REQUEST_ID_HEADER = "X-Custom-Request-Id";
|
|
2
2
|
export declare const YT_CYPRESS_COOKIE_NAME = "YTCypressCookie";
|
3
3
|
export declare const YT_LOCAL_CLUSTER_ID = "ui";
|
4
4
|
export declare const ODIN_PAGE_ID = "odin";
|
5
|
+
export declare const YT_OAUTH_ACCESS_TOKEN_NAME = "yt_oauth_access_token";
|
6
|
+
export declare const YT_OAUTH_REFRESH_TOKEN_NAME = "yt_oauth_refresh_token";
|
7
|
+
export type AuthWay = 'oauth' | 'passwd';
|
5
8
|
/**
|
6
9
|
* Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted
|
7
10
|
*/
|
@@ -2,7 +2,8 @@ export var YT_API_REQUEST_ID_HEADER = 'X-Custom-Request-Id';
|
|
2
2
|
export var YT_CYPRESS_COOKIE_NAME = 'YTCypressCookie';
|
3
3
|
export var YT_LOCAL_CLUSTER_ID = 'ui';
|
4
4
|
export var ODIN_PAGE_ID = 'odin';
|
5
|
-
|
5
|
+
export var YT_OAUTH_ACCESS_TOKEN_NAME = 'yt_oauth_access_token';
|
6
|
+
export var YT_OAUTH_REFRESH_TOKEN_NAME = 'yt_oauth_refresh_token';
|
6
7
|
/**
|
7
8
|
* Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted
|
8
9
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["YT_API_REQUEST_ID_HEADER","YT_CYPRESS_COOKIE_NAME","YT_LOCAL_CLUSTER_ID","ODIN_PAGE_ID","USE_SUPRESS_SYNC","suppress_transaction_coordinator_sync","suppress_upstream_sync"],"sources":["index.ts"],"sourcesContent":["export const YT_API_REQUEST_ID_HEADER = 'X-Custom-Request-Id';\nexport const YT_CYPRESS_COOKIE_NAME = 'YTCypressCookie';\nexport const YT_LOCAL_CLUSTER_ID = 'ui';\nexport const ODIN_PAGE_ID = 'odin';\n\n/**\n * Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted\n */\nexport const USE_SUPRESS_SYNC = {\n suppress_transaction_coordinator_sync: true,\n suppress_upstream_sync: true,\n};\n"],"mappings":"AAAA,OAAO,IAAMA,wBAAwB,GAAG,qBAAqB;AAC7D,OAAO,IAAMC,sBAAsB,GAAG,iBAAiB;AACvD,OAAO,IAAMC,mBAAmB,GAAG,IAAI;AACvC,OAAO,IAAMC,YAAY,GAAG,MAAM
|
1
|
+
{"version":3,"names":["YT_API_REQUEST_ID_HEADER","YT_CYPRESS_COOKIE_NAME","YT_LOCAL_CLUSTER_ID","ODIN_PAGE_ID","YT_OAUTH_ACCESS_TOKEN_NAME","YT_OAUTH_REFRESH_TOKEN_NAME","USE_SUPRESS_SYNC","suppress_transaction_coordinator_sync","suppress_upstream_sync"],"sources":["index.ts"],"sourcesContent":["export const YT_API_REQUEST_ID_HEADER = 'X-Custom-Request-Id';\nexport const YT_CYPRESS_COOKIE_NAME = 'YTCypressCookie';\nexport const YT_LOCAL_CLUSTER_ID = 'ui';\nexport const ODIN_PAGE_ID = 'odin';\n\nexport const YT_OAUTH_ACCESS_TOKEN_NAME = 'yt_oauth_access_token';\nexport const YT_OAUTH_REFRESH_TOKEN_NAME = 'yt_oauth_refresh_token';\n\nexport type AuthWay = 'oauth' | 'passwd';\n\n/**\n * Allows to succeed requests when master are in read-only mode and the transaction coordinator cell is evicted\n */\nexport const USE_SUPRESS_SYNC = {\n suppress_transaction_coordinator_sync: true,\n suppress_upstream_sync: true,\n};\n"],"mappings":"AAAA,OAAO,IAAMA,wBAAwB,GAAG,qBAAqB;AAC7D,OAAO,IAAMC,sBAAsB,GAAG,iBAAiB;AACvD,OAAO,IAAMC,mBAAmB,GAAG,IAAI;AACvC,OAAO,IAAMC,YAAY,GAAG,MAAM;AAElC,OAAO,IAAMC,0BAA0B,GAAG,uBAAuB;AACjE,OAAO,IAAMC,2BAA2B,GAAG,wBAAwB;AAInE;AACA;AACA;AACA,OAAO,IAAMC,gBAAgB,GAAG;EAC5BC,qCAAqC,EAAE,IAAI;EAC3CC,sBAAsB,EAAE;AAC5B,CAAC"}
|
@@ -233,6 +233,8 @@ export interface ConfigData {
|
|
233
233
|
uiSettings?: UISettings;
|
234
234
|
metrikaCounterId?: number;
|
235
235
|
allowLoginDialog?: boolean;
|
236
|
+
allowOAuth?: boolean;
|
237
|
+
oauthButtonLabel?: string;
|
236
238
|
allowUserColumnPresets?: boolean;
|
237
239
|
odinPageEnabled: boolean;
|
238
240
|
}
|