tensorgrid-ui 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +23 -8
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -189,25 +189,40 @@ export function apply(ctx) {
|
|
|
189
189
|
|
|
190
190
|
// ── Вход по подписке ────────────────────────────────────────────────
|
|
191
191
|
//
|
|
192
|
-
// Стойка входа монтируется отдельной строкой профиля, и её может не
|
|
193
|
-
//
|
|
194
|
-
//
|
|
192
|
+
// Стойка входа монтируется отдельной строкой профиля, и её может не быть
|
|
193
|
+
// вовсе.
|
|
194
|
+
//
|
|
195
|
+
// Прочитать её через ctx.get мало: возвращённая служба остаётся под
|
|
196
|
+
// охраной контекста, который её не объявил, и первое же обращение к
|
|
197
|
+
// методу отвечает «cannot get property "list" without inject». Объявить
|
|
198
|
+
// стойку в inject всего ряда тоже нельзя — тогда без неё не
|
|
199
|
+
// смонтируется ни палитра, ни перевод.
|
|
200
|
+
//
|
|
201
|
+
// Поэтому службы забираются ВЛОЖЕННЫМ рядом и запоминаются: он ждёт их
|
|
202
|
+
// появления, не задерживая остальное, и ссылки остаются пригодными,
|
|
203
|
+
// потому что связаны с контекстом, который их объявил. Маршрут при этом
|
|
204
|
+
// регистрируется всегда — профиль без стойки получает внятный ответ, а
|
|
205
|
+
// не молчание.
|
|
206
|
+
let authorization = null
|
|
207
|
+
let credentials = null
|
|
208
|
+
web.inject(['authorization', 'credentials'], (bound) => {
|
|
209
|
+
authorization = bound.authorization
|
|
210
|
+
credentials = bound.credentials
|
|
211
|
+
bound.effect(() => () => { authorization = null; credentials = null })
|
|
212
|
+
})
|
|
213
|
+
|
|
195
214
|
web.effect(() =>
|
|
196
215
|
web.webServer.register({
|
|
197
216
|
kind: 'exact',
|
|
198
217
|
path: '/api/tensorgrid.auth',
|
|
199
218
|
async handler(req, res) {
|
|
200
219
|
try {
|
|
201
|
-
|
|
202
|
-
if (authorization === undefined) {
|
|
220
|
+
if (authorization === null) {
|
|
203
221
|
reply(res, 200, { available: false, problem: 'стойка входа не смонтирована' })
|
|
204
222
|
return
|
|
205
223
|
}
|
|
206
224
|
|
|
207
225
|
const bridge = await loadModule('./auth-bridge.js')
|
|
208
|
-
// Хранилище учётных данных читается тем же способом: как
|
|
209
|
-
// свойство оно потребовало бы объявления в inject.
|
|
210
|
-
const credentials = web.get('credentials')
|
|
211
226
|
|
|
212
227
|
if (req.method === 'GET') {
|
|
213
228
|
reply(res, 200, { available: true, ...(await bridge.listProviders(authorization, credentials)) })
|
package/package.json
CHANGED