@ytsaurus/ui 1.74.0 → 1.75.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/dist/public/build/assets-manifest.json +37 -37
- package/dist/public/build/css/{main.c862588f.css → main.2d3cbfcd.css} +2 -2
- package/dist/public/build/css/main.2d3cbfcd.css.map +1 -0
- package/dist/public/build/css/scheduling.00ec9179.chunk.css +2 -0
- package/dist/public/build/css/scheduling.00ec9179.chunk.css.map +1 -0
- package/dist/public/build/js/3302.b8eb7c9c.chunk.js +3 -0
- package/dist/public/build/js/3302.b8eb7c9c.chunk.js.map +1 -0
- package/dist/public/build/js/{6729.a66f3554.chunk.js → 6729.da9aa02f.chunk.js} +2 -2
- package/dist/public/build/js/6729.da9aa02f.chunk.js.map +1 -0
- package/dist/public/build/js/{7959.fedd6b2e.chunk.js → 7959.95ebd185.chunk.js} +2 -2
- package/dist/public/build/js/7959.95ebd185.chunk.js.map +1 -0
- package/dist/public/build/js/acl.c948c339.chunk.js +2 -0
- package/dist/public/build/js/acl.c948c339.chunk.js.map +1 -0
- package/dist/public/build/js/{chyt.8c82dc61.chunk.js → chyt.7f99f87d.chunk.js} +2 -2
- package/dist/public/build/js/chyt.7f99f87d.chunk.js.map +1 -0
- package/dist/public/build/js/{components.a4b032ee.chunk.js → components.bbe331cb.chunk.js} +2 -2
- package/dist/public/build/js/components.bbe331cb.chunk.js.map +1 -0
- package/dist/public/build/js/job.4fc50056.chunk.js +2 -0
- package/dist/public/build/js/job.4fc50056.chunk.js.map +1 -0
- package/dist/public/build/js/main.7981a440.js +3 -0
- package/dist/public/build/js/main.7981a440.js.map +1 -0
- package/dist/public/build/js/{manage-tokens.1888a00d.chunk.js → manage-tokens.286a4da9.chunk.js} +2 -2
- package/dist/public/build/js/{manage-tokens.1888a00d.chunk.js.map → manage-tokens.286a4da9.chunk.js.map} +1 -1
- package/dist/public/build/js/{navigation-flow.18200e3a.chunk.js → navigation-flow.eeb01518.chunk.js} +2 -2
- package/dist/public/build/js/navigation-flow.eeb01518.chunk.js.map +1 -0
- package/dist/public/build/js/navigation.d891266d.chunk.js +2 -0
- package/dist/public/build/js/navigation.d891266d.chunk.js.map +1 -0
- package/dist/public/build/js/{query-navigation.0ac62e3b.chunk.js → query-navigation.9964bfcf.chunk.js} +2 -2
- package/dist/public/build/js/query-navigation.9964bfcf.chunk.js.map +1 -0
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js +2 -0
- package/dist/public/build/js/query-tracker.06cc4fdc.chunk.js.map +1 -0
- package/dist/public/build/js/{runtime.8d1e4e78.js → runtime.481a6d3a.js} +2 -2
- package/dist/public/build/js/{runtime.8d1e4e78.js.map → runtime.481a6d3a.js.map} +1 -1
- package/dist/public/build/manifest.json +32 -32
- package/dist/server/components/oauth.d.ts +2 -1
- package/dist/server/components/oauth.js +15 -7
- package/dist/server/components/vcs/GitlabApi.d.ts +1 -1
- package/dist/server/components/vcs/GitlabApi.js +1 -1
- package/dist/server/controllers/oauth-login.js +8 -3
- package/dist/server/controllers/vcs.js +7 -1
- package/package.json +2 -2
- package/dist/public/build/css/main.c862588f.css.map +0 -1
- package/dist/public/build/css/scheduling.40c36db6.chunk.css +0 -2
- package/dist/public/build/css/scheduling.40c36db6.chunk.css.map +0 -1
- package/dist/public/build/js/3302.dff164d9.chunk.js +0 -3
- package/dist/public/build/js/3302.dff164d9.chunk.js.map +0 -1
- package/dist/public/build/js/6729.a66f3554.chunk.js.map +0 -1
- package/dist/public/build/js/7959.fedd6b2e.chunk.js.map +0 -1
- package/dist/public/build/js/acl.205964ad.chunk.js +0 -2
- package/dist/public/build/js/acl.205964ad.chunk.js.map +0 -1
- package/dist/public/build/js/chyt.8c82dc61.chunk.js.map +0 -1
- package/dist/public/build/js/components.a4b032ee.chunk.js.map +0 -1
- package/dist/public/build/js/job.1bfebd02.chunk.js +0 -2
- package/dist/public/build/js/job.1bfebd02.chunk.js.map +0 -1
- package/dist/public/build/js/main.03a8e7a9.js +0 -3
- package/dist/public/build/js/main.03a8e7a9.js.map +0 -1
- package/dist/public/build/js/navigation-flow.18200e3a.chunk.js.map +0 -1
- package/dist/public/build/js/navigation.18741a4d.chunk.js +0 -2
- package/dist/public/build/js/navigation.18741a4d.chunk.js.map +0 -1
- package/dist/public/build/js/query-navigation.0ac62e3b.chunk.js.map +0 -1
- package/dist/public/build/js/query-tracker.8e7f7688.chunk.js +0 -2
- package/dist/public/build/js/query-tracker.8e7f7688.chunk.js.map +0 -1
- /package/dist/public/build/js/{3302.dff164d9.chunk.js.LICENSE.txt → 3302.b8eb7c9c.chunk.js.LICENSE.txt} +0 -0
- /package/dist/public/build/js/{main.03a8e7a9.js.LICENSE.txt → main.7981a440.js.LICENSE.txt} +0 -0
@@ -14,7 +14,13 @@ exports.getOAuthLogoutPath = getOAuthLogoutPath;
|
|
14
14
|
exports.refreshOAuthToken = refreshOAuthToken;
|
15
15
|
exports.exchangeOAuthToken = exchangeOAuthToken;
|
16
16
|
const axios_1 = __importDefault(require("axios"));
|
17
|
+
const node_crypto_1 = __importDefault(require("node:crypto"));
|
17
18
|
const constants_1 = require("../../shared/constants");
|
19
|
+
function getRedirectURL(req) {
|
20
|
+
var _a;
|
21
|
+
const config = getOAuthSettings(req);
|
22
|
+
return (_a = config.callbackBaseUrl) !== null && _a !== void 0 ? _a : `https://${req.get('host')}`;
|
23
|
+
}
|
18
24
|
function isOAuthAllowed(req) {
|
19
25
|
const config = req.ctx.config.ytOAuthSettings;
|
20
26
|
return Boolean(config &&
|
@@ -64,14 +70,18 @@ function saveOAuthTokensInCookies(res, tokens) {
|
|
64
70
|
});
|
65
71
|
}
|
66
72
|
}
|
67
|
-
function getOAuthLoginPath(req) {
|
73
|
+
function getOAuthLoginPath(req, res) {
|
74
|
+
var _a, _b, _c;
|
75
|
+
const { pathname, search, origin } = new URL((_a = req.get('referrer')) !== null && _a !== void 0 ? _a : '');
|
76
|
+
const state = `state_${node_crypto_1.default.randomUUID()}`;
|
77
|
+
res.cookie(state, { retPath: pathname + search });
|
68
78
|
const config = getOAuthSettings(req);
|
69
|
-
const host = req.get('host');
|
70
79
|
const params = new URLSearchParams({
|
71
80
|
response_type: 'code',
|
72
81
|
client_id: config.clientId,
|
73
82
|
scope: config.scope,
|
74
|
-
redirect_uri: `https://${host}/api/oauth/callback`,
|
83
|
+
redirect_uri: `${(_c = (_b = config.callbackBaseUrl) !== null && _b !== void 0 ? _b : origin) !== null && _c !== void 0 ? _c : `https://${req.get('host')}`}/api/oauth/callback`,
|
84
|
+
state,
|
75
85
|
});
|
76
86
|
const url = new URL(config.authPath, config.baseURL);
|
77
87
|
url.search = params.toString();
|
@@ -82,9 +92,8 @@ function getOAuthLogoutPath(req) {
|
|
82
92
|
if (!config.logoutPath) {
|
83
93
|
return '/api/oauth/logout/callback';
|
84
94
|
}
|
85
|
-
const host = req.get('host');
|
86
95
|
const params = new URLSearchParams({
|
87
|
-
post_logout_redirect_uri:
|
96
|
+
post_logout_redirect_uri: `${getRedirectURL(req)}/api/oauth/logout/callback`,
|
88
97
|
client_id: config.clientId,
|
89
98
|
});
|
90
99
|
const url = new URL(config.logoutPath, config.baseURL);
|
@@ -108,13 +117,12 @@ async function refreshOAuthToken(req, token) {
|
|
108
117
|
}
|
109
118
|
async function exchangeOAuthToken(req, code) {
|
110
119
|
const config = getOAuthSettings(req);
|
111
|
-
const host = req.get('host');
|
112
120
|
const params = new URLSearchParams({
|
113
121
|
grant_type: 'authorization_code',
|
114
122
|
client_id: config.clientId,
|
115
123
|
code: code,
|
116
124
|
client_secret: config.clientSecret,
|
117
|
-
redirect_uri:
|
125
|
+
redirect_uri: `${getRedirectURL(req)}/api/oauth/callback`,
|
118
126
|
});
|
119
127
|
const { data } = await axios_1.default.post(new URL(config.tokenPath, config.baseURL).toString(), params.toString(), {
|
120
128
|
headers: {
|
@@ -5,21 +5,26 @@ exports.oauthLogout = oauthLogout;
|
|
5
5
|
exports.oauthCallback = oauthCallback;
|
6
6
|
const oauth_1 = require("../components/oauth");
|
7
7
|
function oauthLogin(req, res) {
|
8
|
-
res.redirect((0, oauth_1.getOAuthLoginPath)(req));
|
8
|
+
res.redirect((0, oauth_1.getOAuthLoginPath)(req, res));
|
9
9
|
}
|
10
10
|
function oauthLogout(_, res) {
|
11
11
|
(0, oauth_1.removeOAuthCookies)(res);
|
12
12
|
res.redirect('/');
|
13
13
|
}
|
14
14
|
async function oauthCallback(req, res) {
|
15
|
-
|
15
|
+
var _a, _b;
|
16
|
+
const { code, state } = req.query;
|
16
17
|
if (!code) {
|
17
18
|
throw new Error('Authorization code is not specified');
|
18
19
|
}
|
20
|
+
let redirectURL = '/';
|
21
|
+
if (state) {
|
22
|
+
redirectURL = (_b = (_a = req.cookies[state]) === null || _a === void 0 ? void 0 : _a.retPath) !== null && _b !== void 0 ? _b : '/';
|
23
|
+
}
|
19
24
|
try {
|
20
25
|
const tokens = await (0, oauth_1.exchangeOAuthToken)(req, code);
|
21
26
|
(0, oauth_1.saveOAuthTokensInCookies)(res, tokens);
|
22
|
-
res.redirect(
|
27
|
+
res.redirect(redirectURL);
|
23
28
|
}
|
24
29
|
catch (e) {
|
25
30
|
req.ctx.logError('exchange token error', e);
|
@@ -160,7 +160,13 @@ const getDirectoryContent = async (req, res) => {
|
|
160
160
|
res,
|
161
161
|
},
|
162
162
|
});
|
163
|
-
response.sort((a, b) =>
|
163
|
+
response.sort((a, b) => {
|
164
|
+
if (a.type === 'dir' && b.type === 'file')
|
165
|
+
return -1;
|
166
|
+
if (a.type === 'file' && b.type === 'dir')
|
167
|
+
return 1;
|
168
|
+
return a.name.localeCompare(b.name, undefined, { sensitivity: 'base' });
|
169
|
+
});
|
164
170
|
res.status(200).json(response);
|
165
171
|
}
|
166
172
|
catch (e) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@ytsaurus/ui",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.75.1",
|
4
4
|
"repository": {
|
5
5
|
"type": "github",
|
6
6
|
"url": "https://github.com/ytsaurus/ytsaurus-ui/tree/main/packages/ui"
|
@@ -188,7 +188,7 @@
|
|
188
188
|
"engines": {
|
189
189
|
"node": ">=18"
|
190
190
|
},
|
191
|
-
"gitHead": "
|
191
|
+
"gitHead": "b7d8c8f34b2adb9cd30b519bc135fb2bb9073e4a",
|
192
192
|
"overrides": {
|
193
193
|
"axios": "$axios",
|
194
194
|
"react-split-pane": {
|