@ytsaurus/ui 1.12.1 → 1.13.0
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/constants/docsUrls.d.ts +1 -0
- package/build/cjs/ui/constants/docsUrls.js +1 -0
- package/build/cjs/ui/constants/docsUrls.js.map +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/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +11 -7
- package/build/cjs/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
- package/build/cjs/ui/store/actions/tablet_cell_bundles/index.js +1 -1
- package/build/cjs/ui/store/actions/tablet_cell_bundles/index.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/tablet_cell_bundles/index.d.ts +8 -0
- package/build/cjs/ui/store/reducers/tablet_cell_bundles/index.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/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.d.ts +2 -1
- package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +16 -1
- package/build/cjs/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.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/constants/docsUrls.d.ts +1 -0
- package/build/esm/ui/constants/docsUrls.js +1 -0
- package/build/esm/ui/constants/docsUrls.js.map +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/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js +12 -8
- package/build/esm/ui/pages/tablet_cell_bundles/bundles/BundleEditorDialog/BundleEditorDialog.js.map +1 -1
- package/build/esm/ui/store/actions/tablet_cell_bundles/index.js +1 -1
- package/build/esm/ui/store/actions/tablet_cell_bundles/index.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/tablet_cell_bundles/index.d.ts +8 -0
- package/build/esm/ui/store/reducers/tablet_cell_bundles/index.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/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.d.ts +2 -1
- package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.js +15 -0
- package/build/esm/ui/utils/tablet_cell_bundles/bundles/bundle-editor-dialog/index.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.9d592639.js +3 -0
- package/dist/public/build/js/{main.69fdeec5.js.map → main.9d592639.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.69fdeec5.js +0 -3
- /package/dist/public/build/js/{main.69fdeec5.js.LICENSE.txt → main.9d592639.js.LICENSE.txt} +0 -0
@@ -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
|
}
|
@@ -1,14 +1,15 @@
|
|
1
1
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
-
import _isEmpty from "lodash/isEmpty";
|
3
2
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
4
3
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
5
4
|
import React, { useCallback, useState } from 'react';
|
6
5
|
import axios from 'axios';
|
7
|
-
import { useDispatch } from 'react-redux';
|
6
|
+
import { useDispatch, useSelector } from 'react-redux';
|
8
7
|
import { Button, Text, TextInput } from '@gravity-ui/uikit';
|
9
8
|
import { onSuccessLogin } from '../../../store/actions/global';
|
10
9
|
import ytLocalStorage from '../../../utils/yt-local-storage';
|
10
|
+
import { getOAuthButtonLabel, getOAuthEnabled } from '../../../store/selectors/global';
|
11
11
|
import LoginPageWrapper from '../LoginPageWrapper/LoginPageWrapper';
|
12
|
+
import isEmpty from 'lodash/isEmpty';
|
12
13
|
import cn from 'bem-cn-lite';
|
13
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
14
15
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
@@ -34,6 +35,8 @@ function LoginForm(_ref2) {
|
|
34
35
|
_useState2 = _slicedToArray(_useState, 2),
|
35
36
|
username = _useState2[0],
|
36
37
|
setUsername = _useState2[1];
|
38
|
+
var allowOAuth = useSelector(getOAuthEnabled);
|
39
|
+
var buttonLabel = useSelector(getOAuthButtonLabel);
|
37
40
|
var _useState3 = useState(''),
|
38
41
|
_useState4 = _slicedToArray(_useState3, 2),
|
39
42
|
password = _useState4[0],
|
@@ -53,7 +56,7 @@ function LoginForm(_ref2) {
|
|
53
56
|
username: username,
|
54
57
|
password: password
|
55
58
|
});
|
56
|
-
if (!
|
59
|
+
if (!isEmpty(validationErrors)) {
|
57
60
|
setErrors(validationErrors);
|
58
61
|
return;
|
59
62
|
}
|
@@ -92,9 +95,9 @@ function LoginForm(_ref2) {
|
|
92
95
|
children: [/*#__PURE__*/_jsx("h1", {
|
93
96
|
className: block('title'),
|
94
97
|
children: "Welcome to YTsaurus!"
|
95
|
-
}), /*#__PURE__*/
|
98
|
+
}), /*#__PURE__*/_jsxs("p", {
|
96
99
|
className: block('text'),
|
97
|
-
children: "
|
100
|
+
children: ["A unified scalable platform for storing and processing large volumes of data.", /*#__PURE__*/_jsx("br", {}), /*#__PURE__*/_jsx("br", {}), "Login to your account."]
|
98
101
|
}), /*#__PURE__*/_jsxs("form", {
|
99
102
|
onSubmit: handleFormSubmit,
|
100
103
|
children: [/*#__PURE__*/_jsx(TextInput, {
|
@@ -119,7 +122,8 @@ function LoginForm(_ref2) {
|
|
119
122
|
error: errors.password
|
120
123
|
}), /*#__PURE__*/_jsx(Button, {
|
121
124
|
className: block('button', {
|
122
|
-
solid: true
|
125
|
+
solid: true,
|
126
|
+
submit: true
|
123
127
|
}),
|
124
128
|
type: "submit",
|
125
129
|
width: "max",
|
@@ -128,6 +132,20 @@ function LoginForm(_ref2) {
|
|
128
132
|
view: theme === 'light' ? 'action' : 'normal-contrast',
|
129
133
|
loading: loading,
|
130
134
|
children: "Login"
|
135
|
+
}), allowOAuth && /*#__PURE__*/_jsx(Button, {
|
136
|
+
className: block('button', {
|
137
|
+
solid: true,
|
138
|
+
link: true,
|
139
|
+
submit: true
|
140
|
+
}),
|
141
|
+
type: "submit",
|
142
|
+
href: "/oauth/login",
|
143
|
+
width: "max",
|
144
|
+
size: "l",
|
145
|
+
pin: "circle-circle",
|
146
|
+
view: theme === 'light' ? 'action' : 'normal-contrast',
|
147
|
+
loading: loading,
|
148
|
+
children: buttonLabel || 'Login via SSO'
|
131
149
|
}), errors.response && /*#__PURE__*/_jsx(Text, {
|
132
150
|
as: "p",
|
133
151
|
color: "danger",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","useCallback","useState","axios","useDispatch","Button","Text","TextInput","onSuccessLogin","ytLocalStorage","LoginPageWrapper","cn","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","block","validate","_ref","username","password","result","LoginForm","_ref2","_ytLocalStorage$get","theme","dispatch","_useState","get","_useState2","_slicedToArray","setUsername","_useState3","_useState4","setPassword","_useState5","_useState6","loading","setLoading","_React$useState","_React$useState2","errors","setErrors","handleFormSubmit","e","preventDefault","validationErrors","_isEmpty","authorize","then","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","set","stop","error","response","data","message","children","className","onSubmit","type","size","placeholder","name","value","onUpdate","solid","width","pin","view","as","color","_ref4","post","LoginFormPage","_ref5"],"sources":["LoginFormPage.tsx"],"sourcesContent":["import React, {useCallback, useState} from 'react';\nimport axios, {AxiosError} from 'axios';\nimport {useDispatch} from 'react-redux';\nimport {Button, Text, TextInput} from '@gravity-ui/uikit';\nimport {onSuccessLogin} from '../../../store/actions/global';\nimport ytLocalStorage from '../../../utils/yt-local-storage';\nimport LoginPageWrapper from '../LoginPageWrapper/LoginPageWrapper';\nimport _ from 'lodash';\n\nimport cn from 'bem-cn-lite';\n\nconst block = cn('login-page');\n\ninterface ErrorFields {\n username?: string;\n password?: string;\n response?: string;\n}\n\ninterface Props {\n theme?: 'light' | 'dark';\n}\n\nconst validate = ({\n username,\n password,\n}: Record<keyof Omit<ErrorFields, 'response'>, string>): ErrorFields => {\n const result: ErrorFields = {};\n if (username === '') {\n result.username = 'Username must not be empty';\n }\n\n if (password === '') {\n result.password = 'Password must not be empty';\n }\n\n return result;\n};\n\nfunction LoginForm({theme}: Props) {\n const dispatch = useDispatch();\n const [username, setUsername] = useState(ytLocalStorage.get('loginDialog')?.username || '');\n const [password, setPassword] = useState('');\n const [loading, setLoading] = useState<boolean>(false);\n const [errors, setErrors] = React.useState<ErrorFields>({});\n\n const handleFormSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n setErrors({});\n const validationErrors = validate({username, password});\n if (!_.isEmpty(validationErrors)) {\n setErrors(validationErrors);\n return;\n }\n setLoading(true);\n authorize({username, password})\n .then(async () => {\n ytLocalStorage.set('loginDialog', {username});\n dispatch(onSuccessLogin(username));\n })\n .catch((error: AxiosError<Error>) => {\n if (error.response && error.response.data && error.response.data.message) {\n setErrors({\n response: error.response.data.message,\n });\n } else {\n setErrors({response: error.message});\n }\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [username, password, dispatch],\n );\n\n return (\n <>\n <h1 className={block('title')}>Welcome to YTsaurus!</h1>\n <p className={block('text')}>\n Single scalable platform for high volume storage and handling data. Login to your\n account.\n </p>\n <form onSubmit={handleFormSubmit}>\n <TextInput\n className={block('field')}\n type=\"text\"\n size=\"l\"\n placeholder=\"Login\"\n name=\"username\"\n value={username}\n onUpdate={setUsername}\n error={errors.username}\n />\n <TextInput\n className={block('field', {password: true})}\n type=\"password\"\n size=\"l\"\n placeholder=\"Password\"\n name=\"password\"\n value={password}\n onUpdate={setPassword}\n error={errors.password}\n />\n <Button\n className={block('button', {solid: true})}\n type=\"submit\"\n width=\"max\"\n size=\"l\"\n pin=\"circle-circle\"\n view={theme === 'light' ? 'action' : 'normal-contrast'}\n loading={loading}\n >\n Login\n </Button>\n {errors.response && (\n <Text as=\"p\" color=\"danger\" className={block('error')}>\n {errors.response}\n </Text>\n )}\n </form>\n </>\n );\n}\n\nfunction authorize({username, password}: {username: string; password: string}) {\n return axios.post(`/api/yt/login`, {\n username,\n password,\n });\n}\n\nexport function LoginFormPage({theme}: Props) {\n return (\n <LoginPageWrapper theme={theme}>\n <LoginForm theme={theme} />\n </LoginPageWrapper>\n );\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["React","useCallback","useState","axios","useDispatch","useSelector","Button","Text","TextInput","onSuccessLogin","ytLocalStorage","getOAuthButtonLabel","getOAuthEnabled","LoginPageWrapper","isEmpty","cn","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","block","validate","_ref","username","password","result","LoginForm","_ref2","_ytLocalStorage$get","theme","dispatch","_useState","get","_useState2","_slicedToArray","setUsername","allowOAuth","buttonLabel","_useState3","_useState4","setPassword","_useState5","_useState6","loading","setLoading","_React$useState","_React$useState2","errors","setErrors","handleFormSubmit","e","preventDefault","validationErrors","authorize","then","_asyncToGenerator","_regeneratorRuntime","mark","_callee","wrap","_callee$","_context","prev","next","set","stop","error","response","data","message","children","className","onSubmit","type","size","placeholder","name","value","onUpdate","solid","submit","width","pin","view","link","href","as","color","_ref4","post","LoginFormPage","_ref5"],"sources":["LoginFormPage.tsx"],"sourcesContent":["import React, {useCallback, useState} from 'react';\nimport axios, {AxiosError} from 'axios';\nimport {useDispatch, useSelector} from 'react-redux';\nimport {Button, Text, TextInput} from '@gravity-ui/uikit';\nimport {onSuccessLogin} from '../../../store/actions/global';\nimport ytLocalStorage from '../../../utils/yt-local-storage';\nimport {getOAuthButtonLabel, getOAuthEnabled} from '../../../store/selectors/global';\nimport LoginPageWrapper from '../LoginPageWrapper/LoginPageWrapper';\nimport isEmpty from 'lodash/isEmpty';\n\nimport cn from 'bem-cn-lite';\n\nconst block = cn('login-page');\n\ninterface ErrorFields {\n username?: string;\n password?: string;\n response?: string;\n}\n\ninterface Props {\n theme?: 'light' | 'dark';\n}\n\nconst validate = ({\n username,\n password,\n}: Record<keyof Omit<ErrorFields, 'response'>, string>): ErrorFields => {\n const result: ErrorFields = {};\n if (username === '') {\n result.username = 'Username must not be empty';\n }\n\n if (password === '') {\n result.password = 'Password must not be empty';\n }\n\n return result;\n};\n\nfunction LoginForm({theme}: Props) {\n const dispatch = useDispatch();\n const [username, setUsername] = useState(ytLocalStorage.get('loginDialog')?.username || '');\n const allowOAuth = useSelector(getOAuthEnabled);\n const buttonLabel = useSelector(getOAuthButtonLabel);\n const [password, setPassword] = useState('');\n const [loading, setLoading] = useState<boolean>(false);\n const [errors, setErrors] = React.useState<ErrorFields>({});\n\n const handleFormSubmit = useCallback(\n (e: React.FormEvent) => {\n e.preventDefault();\n setErrors({});\n const validationErrors = validate({username, password});\n if (!isEmpty(validationErrors)) {\n setErrors(validationErrors);\n return;\n }\n setLoading(true);\n authorize({username, password})\n .then(async () => {\n ytLocalStorage.set('loginDialog', {username});\n dispatch(onSuccessLogin(username));\n })\n .catch((error: AxiosError<Error>) => {\n if (error.response && error.response.data && error.response.data.message) {\n setErrors({\n response: error.response.data.message,\n });\n } else {\n setErrors({response: error.message});\n }\n })\n .finally(() => {\n setLoading(false);\n });\n },\n [username, password, dispatch],\n );\n\n return (\n <>\n <h1 className={block('title')}>Welcome to YTsaurus!</h1>\n <p className={block('text')}>\n A unified scalable platform for storing and processing large volumes of data.\n <br />\n <br />\n Login to your account.\n </p>\n <form onSubmit={handleFormSubmit}>\n <TextInput\n className={block('field')}\n type=\"text\"\n size=\"l\"\n placeholder=\"Login\"\n name=\"username\"\n value={username}\n onUpdate={setUsername}\n error={errors.username}\n />\n <TextInput\n className={block('field', {password: true})}\n type=\"password\"\n size=\"l\"\n placeholder=\"Password\"\n name=\"password\"\n value={password}\n onUpdate={setPassword}\n error={errors.password}\n />\n\n <Button\n className={block('button', {solid: true, submit: true})}\n type=\"submit\"\n width=\"max\"\n size=\"l\"\n pin=\"circle-circle\"\n view={theme === 'light' ? 'action' : 'normal-contrast'}\n loading={loading}\n >\n Login\n </Button>\n\n {allowOAuth && (\n <Button\n className={block('button', {solid: true, link: true, submit: true})}\n type=\"submit\"\n href=\"/oauth/login\"\n width=\"max\"\n size=\"l\"\n pin=\"circle-circle\"\n view={theme === 'light' ? 'action' : 'normal-contrast'}\n loading={loading}\n >\n {buttonLabel || 'Login via SSO'}\n </Button>\n )}\n\n {errors.response && (\n <Text as=\"p\" color=\"danger\" className={block('error')}>\n {errors.response}\n </Text>\n )}\n </form>\n </>\n );\n}\n\nfunction authorize({username, password}: {username: string; password: string}) {\n return axios.post(`/api/yt/login`, {\n username,\n password,\n });\n}\n\nexport function LoginFormPage({theme}: Props) {\n return (\n <LoginPageWrapper theme={theme}>\n <LoginForm theme={theme} />\n </LoginPageWrapper>\n );\n}\n"],"mappings":"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"}
|
@@ -112,6 +112,14 @@
|
|
112
112
|
--yc-button-background-color: var(--login-button-solid);
|
113
113
|
--yc-button-background-color-hover: var(--login-button-solid-hover);
|
114
114
|
}
|
115
|
+
.login-page__button_link {
|
116
|
+
display: flex;
|
117
|
+
align-items: center;
|
118
|
+
justify-content: center;
|
119
|
+
}
|
120
|
+
.login-page__button_submit:not(:last-child) {
|
121
|
+
margin-bottom: 10px;
|
122
|
+
}
|
115
123
|
.login-page .yc-button_loading {
|
116
124
|
--yc-button-loading-color-1: var(--login-button-loading-color-1);
|
117
125
|
--yc-button-loading-color-2: var(--login-button-loading-color-2);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["LoginPageWrapper.scss","login-page-theme-light.scss","login-page-theme-dark.scss"],"names":[],"mappings":"AAGA;;ECFI,2BAAA;EACA,6BAAA;EACA,mCAAA;EACA,0FAAA;EACA,uCAAA;EACA,uCAAA;ADEJ;;AAAA;;EEPI,2BAAA;EACA,6BAAA;EACA,mCAAA;EACA,yFAAA;EACA,uCAAA;EACA,uCAAA;AFYJ;;AACA;EALI,sBAAA;EACA,kBAAA;EACA,gBAAA;EAMA,kBAAA;EACA,aAAA;EACA,sBAAA;EAEA,gBAAA;EACA,iBAAA;EACA,uBAAA;EAEA,yCAAA;EACA,+CAAA;EACA,4BAAA;EACA,qCAAA;EACA,0BAAA;AACJ;AACI;EACI,kBAAA;EACA,SAAA;EACA,UAAA;EACA,eAAA;EACA,eAAA;AACR;AAEI;EACI,gBAAA;EACA,kBAAA;AAAR;AAEQ;EAJJ;IAKQ,kBAAA;EACV;AACF;AACQ;EARJ;IASQ,kBAAA;EAEV;AACF;AAAQ;EAZJ;IAaQ,kBAAA;EAGV;AACF;AADQ;EAhBJ;IAiBQ,kBAAA;EAIV;AACF;AADI;EACI,eAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AAGR;AAAI;EACI,eAAA;EACA,iBAAA;EACA,gBAAA;AAER;AACI;EACI,cAAA;AACR;AAEI;EACI,mBAAA;EACA,mCAAA;AAAR;AAEQ;EAzEJ,sBAAA;EACA,kBAAA;EACA,gBAAA;EAyEQ,YAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;AAEZ;AAEY;EACI,mBAAA;AAAhB;AADY;EACI,mBAAA;AAAhB;AAKI;EAzFA,sBAAA;EACA,kBAAA;EACA,gBAAA;EAyFI,wBAAA;EACA,eAAA;EACA,iBAAA;AADR;AAGQ;EACI,uDAAA;EACA,mEAAA;AADZ;
|
1
|
+
{"version":3,"sources":["LoginPageWrapper.scss","login-page-theme-light.scss","login-page-theme-dark.scss"],"names":[],"mappings":"AAGA;;ECFI,2BAAA;EACA,6BAAA;EACA,mCAAA;EACA,0FAAA;EACA,uCAAA;EACA,uCAAA;ADEJ;;AAAA;;EEPI,2BAAA;EACA,6BAAA;EACA,mCAAA;EACA,yFAAA;EACA,uCAAA;EACA,uCAAA;AFYJ;;AACA;EALI,sBAAA;EACA,kBAAA;EACA,gBAAA;EAMA,kBAAA;EACA,aAAA;EACA,sBAAA;EAEA,gBAAA;EACA,iBAAA;EACA,uBAAA;EAEA,yCAAA;EACA,+CAAA;EACA,4BAAA;EACA,qCAAA;EACA,0BAAA;AACJ;AACI;EACI,kBAAA;EACA,SAAA;EACA,UAAA;EACA,eAAA;EACA,eAAA;AACR;AAEI;EACI,gBAAA;EACA,kBAAA;AAAR;AAEQ;EAJJ;IAKQ,kBAAA;EACV;AACF;AACQ;EARJ;IASQ,kBAAA;EAEV;AACF;AAAQ;EAZJ;IAaQ,kBAAA;EAGV;AACF;AADQ;EAhBJ;IAiBQ,kBAAA;EAIV;AACF;AADI;EACI,eAAA;EACA,iBAAA;EACA,eAAA;EACA,gBAAA;EACA,mBAAA;AAGR;AAAI;EACI,eAAA;EACA,iBAAA;EACA,gBAAA;AAER;AACI;EACI,cAAA;AACR;AAEI;EACI,mBAAA;EACA,mCAAA;AAAR;AAEQ;EAzEJ,sBAAA;EACA,kBAAA;EACA,gBAAA;EAyEQ,YAAA;EACA,kBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;AAEZ;AAEY;EACI,mBAAA;AAAhB;AADY;EACI,mBAAA;AAAhB;AAKI;EAzFA,sBAAA;EACA,kBAAA;EACA,gBAAA;EAyFI,wBAAA;EACA,eAAA;EACA,iBAAA;AADR;AAGQ;EACI,uDAAA;EACA,mEAAA;AADZ;AAIQ;EACI,aAAA;EACA,mBAAA;EACA,uBAAA;AAFZ;AAMY;EACI,mBAAA;AAJhB;AASI;EACI,gEAAA;EACA,gEAAA;AAPR;AAUI;EACI,yCAAA;AARR;AAWI;EACI,yDAAA;AATR;AAYI;EACI,iBAAA;EACA,WAAA;EACA,aAAA;EACA,mBAAA;EACA,8BAAA;AAVR;AAaI;EACI,SAAA;EACA,eAAA;EACA,kBAAA;EACA,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,oCAAA;EACA,yBAAA;EACA,gDAAA;AAXR;AAaQ;EACI,kCAAA;EACA,sDAAA;AAXZ","file":"LoginPageWrapper.css","sourcesContent":["@import './login-page-theme-light.scss';\n@import './login-page-theme-dark.scss';\n\n.g-root_theme_light,\n.g-root_theme_light-hc {\n @include yt-login-page-light;\n}\n\n.g-root_theme_dark,\n.g-root_theme_dark-hc {\n @include yt-login-page-dark;\n}\n\n@mixin login-page-font-settings {\n font-family: 'Manrope';\n font-style: normal;\n font-weight: 400;\n}\n\n.login-page {\n @include login-page-font-settings;\n\n position: relative;\n display: flex;\n flex-direction: column;\n\n min-width: 320px;\n min-height: 100vh;\n justify-content: center;\n\n background-color: var(--login-background);\n background-image: var(--login-background-image);\n background-repeat: no-repeat;\n background-position: bottom 0 right 0;\n background-size: auto 100%;\n\n &__logo {\n position: absolute;\n top: 40px;\n left: 40px;\n width: 160.32px;\n height: 33.06px;\n }\n\n &__content {\n max-width: 300px;\n margin-left: 150px;\n\n @media (min-width: 1200px) {\n margin-left: 150px;\n }\n\n @media (min-width: 1400px) {\n margin-left: 200px;\n }\n\n @media (min-width: 1600px) {\n margin-left: 250px;\n }\n\n @media (min-width: 1920px) {\n margin-left: 330px;\n }\n }\n\n &__title {\n font-size: 30px;\n line-height: 36px;\n margin: 0 0 8px;\n font-weight: 600;\n white-space: nowrap;\n }\n\n &__text {\n font-size: 13px;\n line-height: 18px;\n margin: 0 0 24px;\n }\n\n &__error {\n margin: 12px 0;\n }\n\n &__field {\n margin-bottom: 20px;\n --yc-text-input-border-radius: 10px;\n\n .yc-text-input__control {\n @include login-page-font-settings;\n height: 40px;\n padding: 12px 10px;\n font-size: 13px;\n line-height: 16px;\n background: none;\n }\n\n &_password {\n .yc-text-input__control:not(:placeholder-shown) {\n letter-spacing: 2px;\n }\n }\n }\n\n &__button {\n @include login-page-font-settings;\n --yc-button-height: 38px;\n font-size: 15px;\n line-height: 20px;\n\n &_solid {\n --yc-button-background-color: var(--login-button-solid);\n --yc-button-background-color-hover: var(--login-button-solid-hover);\n }\n\n &_link {\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n &_submit {\n &:not(:last-child) {\n margin-bottom: 10px;\n }\n }\n }\n\n .yc-button_loading {\n --yc-button-loading-color-1: var(--login-button-loading-color-1);\n --yc-button-loading-color-2: var(--login-button-loading-color-2);\n }\n\n .yc-button_view_outlined::before {\n background-color: var(--login-background);\n }\n\n .yc-button:hover::before {\n background-color: var(--yc-button-background-color-hover);\n }\n\n &__navigate {\n padding-top: 15px;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n }\n\n &__navigate-link {\n margin: 0;\n cursor: pointer;\n font-style: normal;\n font-weight: 400;\n font-size: 13px;\n line-height: 18px;\n text-align: left;\n color: var(--g-color-text-secondary);\n border-bottom: 1px dashed;\n border-color: var(--g-color-line-generic-accent);\n\n &:hover {\n color: var(--g-color-text-primary);\n border-color: var(--g-color-line-generic-accent-hover);\n }\n }\n}\n","@mixin yt-login-page-light {\n --login-background: #f5fff0;\n --login-button-solid: #4c4c4c;\n --login-button-solid-hover: #333333;\n --login-background-image: url('../../../../../img/svg/YT-login-page-background-light.svg');\n --login-button-loading-color-1: #333333;\n --login-button-loading-color-2: #4c4c4c;\n}\n","@mixin yt-login-page-dark {\n --login-background: #1a1a1a;\n --login-button-solid: #e9a43b;\n --login-button-solid-hover: #d28004;\n --login-background-image: url('../../../../../img/svg/YT-login-page-background-dark.svg');\n --login-button-loading-color-1: #e9a43b;\n --login-button-loading-color-2: #d28004;\n}\n"],"sourceRoot":""}
|
@@ -111,6 +111,18 @@
|
|
111
111
|
--yc-button-background-color: var(--login-button-solid);
|
112
112
|
--yc-button-background-color-hover: var(--login-button-solid-hover);
|
113
113
|
}
|
114
|
+
|
115
|
+
&_link {
|
116
|
+
display: flex;
|
117
|
+
align-items: center;
|
118
|
+
justify-content: center;
|
119
|
+
}
|
120
|
+
|
121
|
+
&_submit {
|
122
|
+
&:not(:last-child) {
|
123
|
+
margin-bottom: 10px;
|
124
|
+
}
|
125
|
+
}
|
114
126
|
}
|
115
127
|
|
116
128
|
.yc-button_loading {
|
@@ -68,8 +68,8 @@ export declare class NumberInputWithError extends React.Component<NumberInputWit
|
|
68
68
|
bottomLineVisibility?: "hidden" | "visible" | "focused" | undefined;
|
69
69
|
disabled?: boolean | undefined;
|
70
70
|
type?: string | undefined;
|
71
|
-
id?: string | undefined;
|
72
71
|
name?: string | undefined;
|
72
|
+
id?: string | undefined;
|
73
73
|
errorMessage?: React.ReactNode;
|
74
74
|
size?: import("@gravity-ui/uikit").InputControlSize | undefined;
|
75
75
|
label?: string | undefined;
|
@@ -8,6 +8,7 @@ export declare const docsUrls: {
|
|
8
8
|
'faq:enablepathautocorrection': string;
|
9
9
|
'storage:static_tables': string;
|
10
10
|
'dynamic-tables:overview': string;
|
11
|
+
'dynamic-tables:cross-dc': string;
|
11
12
|
'storage:compression#compression_codecs': string;
|
12
13
|
'storage:replication#replication': string;
|
13
14
|
'storage:replication#erasure': string;
|
@@ -10,6 +10,7 @@ export var docsUrls = {
|
|
10
10
|
'faq:enablepathautocorrection': "".concat(baseUrl, "/faq/faq#enablepathautocorrection"),
|
11
11
|
'storage:static_tables': "".concat(baseUrl, "/user-guide/storage/static-tables"),
|
12
12
|
'dynamic-tables:overview': "".concat(baseUrl, "/user-guide/dynamic-tables/overview"),
|
13
|
+
'dynamic-tables:cross-dc': "".concat(baseUrl, "/user-guide/dynamic-tables/dynamic-tables-resources#georaspredelyonnye-klastery-cross-dc"),
|
13
14
|
'storage:compression#compression_codecs': "".concat(baseUrl, "/user-guide/storage/compression#compression_codecs"),
|
14
15
|
'storage:replication#replication': "".concat(baseUrl, "/user-guide/storage/replication#replication"),
|
15
16
|
'storage:replication#erasure': "".concat(baseUrl, "/user-guide/storage/replication#erasure"),
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["getDocsBaseUrl","baseUrl","docsUrls","concat"],"sources":["docsUrls.ts"],"sourcesContent":["import {getDocsBaseUrl} from '../config';\n\nconst baseUrl = getDocsBaseUrl() || '';\n\nexport const docsUrls = {\n 'bundle-controller:reserved-memory': ``,\n 'cypress:ttl': `${baseUrl}/user-guide/storage/cypress#TTL`,\n 'storage:compression': `${baseUrl}/user-guide/storage/compression`,\n 'operations:recommendations#slishkom-melkie-chanki': `${baseUrl}/user-guide/data-processing/operations/recommendations#slishkom-melkie-chanki`,\n 'scheduler:integral_guarantees': `${baseUrl}/user-guide/data-processing/scheduler/integral-guarantees`,\n 'overview:quickstart': `${baseUrl}/overview/try-yt`,\n 'faq:enablepathautocorrection': `${baseUrl}/faq/faq#enablepathautocorrection`,\n 'storage:static_tables': `${baseUrl}/user-guide/storage/static-tables`,\n 'dynamic-tables:overview': `${baseUrl}/user-guide/dynamic-tables/overview`,\n 'storage:compression#compression_codecs': `${baseUrl}/user-guide/storage/compression#compression_codecs`,\n 'storage:replication#replication': `${baseUrl}/user-guide/storage/replication#replication`,\n 'storage:replication#erasure': `${baseUrl}/user-guide/storage/replication#erasure`,\n 'storage:static_schema': `${baseUrl}/user-guide/storage/static-schema`,\n 'storage:data_types#schema': `${baseUrl}/user-guide/storage/data-types#schema`,\n 'storage:data_types#schema_optional': `${baseUrl}/user-guide/storage/data-types#schema_optional`,\n 'storage:static_schema#overview': `${baseUrl}/user-guide/storage/static-schema`,\n 'dynamic-tables:transactions#conflicts': `${baseUrl}/user-guide/dynamic-tables/transactions#conflicts`,\n 'dynamic-tables:sorted_dynamic_tables#aggr_columns': `${baseUrl}/user-guide/dynamic-tables/sorted-dynamic-tables#aggr_columns`,\n 'problems:jobstatistics': `${baseUrl}/user-guide/problems/jobstatistics`,\n 'storage:formats': `${baseUrl}/user-guide/storage/formats`,\n 'storage:excel#skachivanie': `${baseUrl}/user-guide/storage/excel#skachivanie`,\n 'storage:excel': `${baseUrl}/user-guide/storage/excel`,\n 'faq:web_interface_table_download': `${baseUrl}/faq/faq#web_interface_table_download`,\n 'dynamic-tables:overview#in_memory': `${baseUrl}/user-guide/dynamic-tables/overview#in_memory`,\n 'storage:chunks#optimize_for': `${baseUrl}/user-guide/storage/chunks#optimize_for`,\n 'storage:accounts': `${baseUrl}/user-guide/storage/accounts`,\n 'storage:media#primary': `${baseUrl}/user-guide/storage/media#primary`,\n 'dynamic-tables:concepts#tablet_cell_bundles': `${baseUrl}/user-guide/dynamic-tables/concepts#tablet_cell_bundles`,\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij': `${baseUrl}/user-guide/data-processing/operations/operations-options#common_options`,\n 'operations:erase': `${baseUrl}/user-guide/data-processing/operations/erase`,\n 'operations:merge': `${baseUrl}/user-guide/data-processing/operations/merge`,\n 'operations:overview#aborted_jobs': `${baseUrl}/user-guide/data-processing/operations/overview#aborted_jobs`,\n 'operations:overview#completed_jobs': `${baseUrl}/user-guide/data-processing/operations/overview#completed_jobs`,\n 'operations:operations_options': `${baseUrl}/user-guide/data-processing/operations/operations-options`,\n 'operations:remote_copy': `${baseUrl}/user-guide/data-processing/operations/remote-copy`,\n 'scheduler:scheduler_and_pools': `${baseUrl}/user-guide/data-processing/scheduler/scheduler-and-pools`,\n 'faq:alert_type': `${baseUrl}/faq/faq#`,\n 'common:quotas#request_quota': '',\n 'common:quota_request': '',\n 'api:cli': `${baseUrl}/api/cli/cli`,\n 'chyt:yt_tables#dynamic': `${baseUrl}/user-guide/data-processing/chyt/yt-tables#dynamic`,\n 'common:regular_system_processes': '',\n 'acl:permissions': `${baseUrl}/user-guide/storage/access-control#authorization`,\n};\n\nexport type DocsUrls = typeof docsUrls;\n"],"mappings":"AAAA,SAAQA,cAAc,QAAO,WAAW;AAExC,IAAMC,OAAO,GAAGD,cAAc,CAAC,CAAC,IAAI,EAAE;AAEtC,OAAO,IAAME,QAAQ,GAAG;EACpB,mCAAmC,IAAI;EACvC,aAAa,KAAAC,MAAA,CAAKF,OAAO,oCAAiC;EAC1D,qBAAqB,KAAAE,MAAA,CAAKF,OAAO,oCAAiC;EAClE,mDAAmD,KAAAE,MAAA,CAAKF,OAAO,kFAA+E;EAC9I,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,qBAAqB,KAAAE,MAAA,CAAKF,OAAO,qBAAkB;EACnD,8BAA8B,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EAC7E,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,yBAAyB,KAAAE,MAAA,CAAKF,OAAO,wCAAqC;EAC1E,wCAAwC,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxG,iCAAiC,KAAAE,MAAA,CAAKF,OAAO,gDAA6C;EAC1F,6BAA6B,KAAAE,MAAA,CAAKF,OAAO,4CAAyC;EAClF,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,2BAA2B,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EAC9E,oCAAoC,KAAAE,MAAA,CAAKF,OAAO,mDAAgD;EAChG,gCAAgC,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EAC/E,uCAAuC,KAAAE,MAAA,CAAKF,OAAO,sDAAmD;EACtG,mDAAmD,KAAAE,MAAA,CAAKF,OAAO,kEAA+D;EAC9H,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uCAAoC;EACxE,iBAAiB,KAAAE,MAAA,CAAKF,OAAO,gCAA6B;EAC1D,2BAA2B,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EAC9E,eAAe,KAAAE,MAAA,CAAKF,OAAO,8BAA2B;EACtD,kCAAkC,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EACrF,mCAAmC,KAAAE,MAAA,CAAKF,OAAO,kDAA+C;EAC9F,6BAA6B,KAAAE,MAAA,CAAKF,OAAO,4CAAyC;EAClF,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iCAA8B;EAC5D,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,6CAA6C,KAAAE,MAAA,CAAKF,OAAO,4DAAyD;EAClH,qEAAqE,KAAAE,MAAA,CAAKF,OAAO,6EAA0E;EAC3J,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iDAA8C;EAC5E,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iDAA8C;EAC5E,kCAAkC,KAAAE,MAAA,CAAKF,OAAO,iEAA8D;EAC5G,oCAAoC,KAAAE,MAAA,CAAKF,OAAO,mEAAgE;EAChH,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxF,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,gBAAgB,KAAAE,MAAA,CAAKF,OAAO,cAAW;EACvC,6BAA6B,EAAE,EAAE;EACjC,sBAAsB,EAAE,EAAE;EAC1B,SAAS,KAAAE,MAAA,CAAKF,OAAO,iBAAc;EACnC,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxF,iCAAiC,EAAE,EAAE;EACrC,iBAAiB,KAAAE,MAAA,CAAKF,OAAO;AACjC,CAAC"}
|
1
|
+
{"version":3,"names":["getDocsBaseUrl","baseUrl","docsUrls","concat"],"sources":["docsUrls.ts"],"sourcesContent":["import {getDocsBaseUrl} from '../config';\n\nconst baseUrl = getDocsBaseUrl() || '';\n\nexport const docsUrls = {\n 'bundle-controller:reserved-memory': ``,\n 'cypress:ttl': `${baseUrl}/user-guide/storage/cypress#TTL`,\n 'storage:compression': `${baseUrl}/user-guide/storage/compression`,\n 'operations:recommendations#slishkom-melkie-chanki': `${baseUrl}/user-guide/data-processing/operations/recommendations#slishkom-melkie-chanki`,\n 'scheduler:integral_guarantees': `${baseUrl}/user-guide/data-processing/scheduler/integral-guarantees`,\n 'overview:quickstart': `${baseUrl}/overview/try-yt`,\n 'faq:enablepathautocorrection': `${baseUrl}/faq/faq#enablepathautocorrection`,\n 'storage:static_tables': `${baseUrl}/user-guide/storage/static-tables`,\n 'dynamic-tables:overview': `${baseUrl}/user-guide/dynamic-tables/overview`,\n 'dynamic-tables:cross-dc': `${baseUrl}/user-guide/dynamic-tables/dynamic-tables-resources#georaspredelyonnye-klastery-cross-dc`,\n 'storage:compression#compression_codecs': `${baseUrl}/user-guide/storage/compression#compression_codecs`,\n 'storage:replication#replication': `${baseUrl}/user-guide/storage/replication#replication`,\n 'storage:replication#erasure': `${baseUrl}/user-guide/storage/replication#erasure`,\n 'storage:static_schema': `${baseUrl}/user-guide/storage/static-schema`,\n 'storage:data_types#schema': `${baseUrl}/user-guide/storage/data-types#schema`,\n 'storage:data_types#schema_optional': `${baseUrl}/user-guide/storage/data-types#schema_optional`,\n 'storage:static_schema#overview': `${baseUrl}/user-guide/storage/static-schema`,\n 'dynamic-tables:transactions#conflicts': `${baseUrl}/user-guide/dynamic-tables/transactions#conflicts`,\n 'dynamic-tables:sorted_dynamic_tables#aggr_columns': `${baseUrl}/user-guide/dynamic-tables/sorted-dynamic-tables#aggr_columns`,\n 'problems:jobstatistics': `${baseUrl}/user-guide/problems/jobstatistics`,\n 'storage:formats': `${baseUrl}/user-guide/storage/formats`,\n 'storage:excel#skachivanie': `${baseUrl}/user-guide/storage/excel#skachivanie`,\n 'storage:excel': `${baseUrl}/user-guide/storage/excel`,\n 'faq:web_interface_table_download': `${baseUrl}/faq/faq#web_interface_table_download`,\n 'dynamic-tables:overview#in_memory': `${baseUrl}/user-guide/dynamic-tables/overview#in_memory`,\n 'storage:chunks#optimize_for': `${baseUrl}/user-guide/storage/chunks#optimize_for`,\n 'storage:accounts': `${baseUrl}/user-guide/storage/accounts`,\n 'storage:media#primary': `${baseUrl}/user-guide/storage/media#primary`,\n 'dynamic-tables:concepts#tablet_cell_bundles': `${baseUrl}/user-guide/dynamic-tables/concepts#tablet_cell_bundles`,\n 'operations:operations_options#obshie-opcii-dlya-vseh-tipov-operacij': `${baseUrl}/user-guide/data-processing/operations/operations-options#common_options`,\n 'operations:erase': `${baseUrl}/user-guide/data-processing/operations/erase`,\n 'operations:merge': `${baseUrl}/user-guide/data-processing/operations/merge`,\n 'operations:overview#aborted_jobs': `${baseUrl}/user-guide/data-processing/operations/overview#aborted_jobs`,\n 'operations:overview#completed_jobs': `${baseUrl}/user-guide/data-processing/operations/overview#completed_jobs`,\n 'operations:operations_options': `${baseUrl}/user-guide/data-processing/operations/operations-options`,\n 'operations:remote_copy': `${baseUrl}/user-guide/data-processing/operations/remote-copy`,\n 'scheduler:scheduler_and_pools': `${baseUrl}/user-guide/data-processing/scheduler/scheduler-and-pools`,\n 'faq:alert_type': `${baseUrl}/faq/faq#`,\n 'common:quotas#request_quota': '',\n 'common:quota_request': '',\n 'api:cli': `${baseUrl}/api/cli/cli`,\n 'chyt:yt_tables#dynamic': `${baseUrl}/user-guide/data-processing/chyt/yt-tables#dynamic`,\n 'common:regular_system_processes': '',\n 'acl:permissions': `${baseUrl}/user-guide/storage/access-control#authorization`,\n};\n\nexport type DocsUrls = typeof docsUrls;\n"],"mappings":"AAAA,SAAQA,cAAc,QAAO,WAAW;AAExC,IAAMC,OAAO,GAAGD,cAAc,CAAC,CAAC,IAAI,EAAE;AAEtC,OAAO,IAAME,QAAQ,GAAG;EACpB,mCAAmC,IAAI;EACvC,aAAa,KAAAC,MAAA,CAAKF,OAAO,oCAAiC;EAC1D,qBAAqB,KAAAE,MAAA,CAAKF,OAAO,oCAAiC;EAClE,mDAAmD,KAAAE,MAAA,CAAKF,OAAO,kFAA+E;EAC9I,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,qBAAqB,KAAAE,MAAA,CAAKF,OAAO,qBAAkB;EACnD,8BAA8B,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EAC7E,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,yBAAyB,KAAAE,MAAA,CAAKF,OAAO,wCAAqC;EAC1E,yBAAyB,KAAAE,MAAA,CAAKF,OAAO,6FAA0F;EAC/H,wCAAwC,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxG,iCAAiC,KAAAE,MAAA,CAAKF,OAAO,gDAA6C;EAC1F,6BAA6B,KAAAE,MAAA,CAAKF,OAAO,4CAAyC;EAClF,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,2BAA2B,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EAC9E,oCAAoC,KAAAE,MAAA,CAAKF,OAAO,mDAAgD;EAChG,gCAAgC,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EAC/E,uCAAuC,KAAAE,MAAA,CAAKF,OAAO,sDAAmD;EACtG,mDAAmD,KAAAE,MAAA,CAAKF,OAAO,kEAA+D;EAC9H,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uCAAoC;EACxE,iBAAiB,KAAAE,MAAA,CAAKF,OAAO,gCAA6B;EAC1D,2BAA2B,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EAC9E,eAAe,KAAAE,MAAA,CAAKF,OAAO,8BAA2B;EACtD,kCAAkC,KAAAE,MAAA,CAAKF,OAAO,0CAAuC;EACrF,mCAAmC,KAAAE,MAAA,CAAKF,OAAO,kDAA+C;EAC9F,6BAA6B,KAAAE,MAAA,CAAKF,OAAO,4CAAyC;EAClF,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iCAA8B;EAC5D,uBAAuB,KAAAE,MAAA,CAAKF,OAAO,sCAAmC;EACtE,6CAA6C,KAAAE,MAAA,CAAKF,OAAO,4DAAyD;EAClH,qEAAqE,KAAAE,MAAA,CAAKF,OAAO,6EAA0E;EAC3J,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iDAA8C;EAC5E,kBAAkB,KAAAE,MAAA,CAAKF,OAAO,iDAA8C;EAC5E,kCAAkC,KAAAE,MAAA,CAAKF,OAAO,iEAA8D;EAC5G,oCAAoC,KAAAE,MAAA,CAAKF,OAAO,mEAAgE;EAChH,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxF,+BAA+B,KAAAE,MAAA,CAAKF,OAAO,8DAA2D;EACtG,gBAAgB,KAAAE,MAAA,CAAKF,OAAO,cAAW;EACvC,6BAA6B,EAAE,EAAE;EACjC,sBAAsB,EAAE,EAAE;EAC1B,SAAS,KAAAE,MAAA,CAAKF,OAAO,iBAAc;EACnC,wBAAwB,KAAAE,MAAA,CAAKF,OAAO,uDAAoD;EACxF,iCAAiC,EAAE,EAAE;EACrC,iBAAiB,KAAAE,MAAA,CAAKF,OAAO;AACjC,CAAC"}
|
@@ -7,7 +7,7 @@ import _isEmpty from 'lodash/isEmpty';
|
|
7
7
|
import ellipsisIcon from '../../../../img/svg/ellipsis.svg';
|
8
8
|
import { useDispatch, useSelector } from 'react-redux';
|
9
9
|
import { PagesSettingsEditor, usePagesMenuItems } from './PagesSettingsEditor';
|
10
|
-
import { getClusterConfigByName, getCurrentUserName, getRootPagesCluster } from '../../store/selectors/global';
|
10
|
+
import { getAuthWay, getClusterConfigByName, getCurrentUserName, getRootPagesCluster } from '../../store/selectors/global';
|
11
11
|
import SettingsPanel from '../SettingsPanel/SettingsPanel';
|
12
12
|
import { useClusterFromLocation } from '../../hooks/use-cluster';
|
13
13
|
import "./AppNavigation.css";
|
@@ -32,6 +32,7 @@ export default function AppNavigation(_ref) {
|
|
32
32
|
var clusterConfig = getClusterConfigByName(cluster || '');
|
33
33
|
var items = usePagesMenuItems(cluster);
|
34
34
|
var currentUser = useSelector(getCurrentUserName);
|
35
|
+
var authWay = useSelector(getAuthWay);
|
35
36
|
var _React$useState = React.useState(false),
|
36
37
|
_React$useState2 = _slicedToArray(_React$useState, 2),
|
37
38
|
settingsVisible = _React$useState2[0],
|
@@ -88,6 +89,7 @@ export default function AppNavigation(_ref) {
|
|
88
89
|
'no-cluster': !cluster
|
89
90
|
}),
|
90
91
|
currentUser: currentUser,
|
92
|
+
authWay: authWay,
|
91
93
|
menuItems: _isEmpty(clusterConfig) ? [] : menuItems,
|
92
94
|
panelContent: /*#__PURE__*/_jsx(PagesSettingsEditor, {
|
93
95
|
cluster: cluster,
|