Сузить диалог изменения pairing-пароля
This commit is contained in:
parent
d6c5757dfa
commit
e1f2b54de3
@ -1,2 +1,2 @@
|
||||
client.version=1.2.201
|
||||
server.version=1.2.190
|
||||
client.version=1.2.202
|
||||
server.version=1.2.191
|
||||
|
||||
@ -55,7 +55,7 @@ import * as serverSettingsView from './pages/server-settings-view.js';
|
||||
import * as toolsSettingsView from './pages/tools-settings-view.js';
|
||||
import * as deviceView from './pages/device-view.js?v=202606131435';
|
||||
import * as connectDeviceView from './pages/connect-device-view.js?v=202606142055';
|
||||
import * as devicePairingView from './pages/device-pairing-view.js?v=202606151000';
|
||||
import * as devicePairingView from './pages/device-pairing-view.js?v=202606151030';
|
||||
import * as deviceQrView from './pages/device-qr-view.js';
|
||||
import * as deviceCameraView from './pages/device-camera-view.js';
|
||||
import * as showKeysView from './pages/show-keys-view.js';
|
||||
|
||||
@ -173,13 +173,10 @@ export function render({ navigate }) {
|
||||
passwordDialog.style.zIndex = '30';
|
||||
passwordDialog.innerHTML = `
|
||||
<div style="position:absolute; inset:0; background:rgba(5,9,16,0.72); backdrop-filter:blur(4px);" data-action="close-dialog"></div>
|
||||
<div class="card stack" style="position:absolute; left:16px; right:16px; top:24px; gap:12px; box-shadow:var(--shadow);">
|
||||
<div class="row" style="align-items:flex-start;">
|
||||
<div class="stack" style="gap:6px; flex:1;">
|
||||
<p class="field-label" id="pairing-dialog-title">Задать дополнительный пароль</p>
|
||||
<p class="meta-muted" id="pairing-dialog-text">Дополнительный пароль не даёт права на подключение сам по себе. Он только отсекает лишние заявки, чтобы посторонние не могли засыпать ваш аккаунт запросами. Обычно он не нужен, поэтому при желании можно задать и что-то простое, что легко запомнить.</p>
|
||||
</div>
|
||||
<button class="ghost-btn" type="button" data-action="close-dialog">Закрыть</button>
|
||||
<div class="card stack" style="position:absolute; left:50%; top:24px; width:min(calc(100vw - 32px), 360px); transform:translateX(-50%); gap:12px; box-shadow:var(--shadow);">
|
||||
<div class="stack" style="gap:6px;">
|
||||
<p class="field-label" id="pairing-dialog-title">Задать дополнительный пароль</p>
|
||||
<p class="meta-muted" id="pairing-dialog-text">Дополнительный пароль не даёт права на подключение сам по себе. Он только отсекает лишние заявки, чтобы посторонние не могли засыпать ваш аккаунт запросами. Обычно он не нужен, поэтому при желании можно задать и что-то простое, что легко запомнить.</p>
|
||||
</div>
|
||||
<label class="stack">
|
||||
<span class="field-label">Пароль</span>
|
||||
@ -250,6 +247,18 @@ export function render({ navigate }) {
|
||||
passwordDialog.hidden = true;
|
||||
};
|
||||
|
||||
const removeAdditionalPassword = async () => {
|
||||
const payload = await authService.upsertEspPairingSettings({
|
||||
enabled: true,
|
||||
passwordHash: '',
|
||||
ttlSeconds: 180,
|
||||
});
|
||||
pairingPasswordConfigured = false;
|
||||
saveLocalPairingPasswordState(state.session.login, state.entrySettings.shineServer, false);
|
||||
setAuthInfo(`Подключение по коду без дополнительного пароля включено. TTL: ${payload?.ttlSeconds || 180} сек.`);
|
||||
setStatus(status, 'Дополнительный пароль убран. Подключение по коду теперь работает без него.', 'info');
|
||||
};
|
||||
|
||||
const setSettingsBusy = (flag) => {
|
||||
settingsBusy = flag;
|
||||
renderSettingsCard();
|
||||
@ -294,15 +303,7 @@ export function render({ navigate }) {
|
||||
removeBtn.addEventListener('click', async () => {
|
||||
setSettingsBusy(true);
|
||||
try {
|
||||
const payload = await authService.upsertEspPairingSettings({
|
||||
enabled: true,
|
||||
passwordHash: '',
|
||||
ttlSeconds: 180,
|
||||
});
|
||||
pairingPasswordConfigured = false;
|
||||
saveLocalPairingPasswordState(state.session.login, state.entrySettings.shineServer, false);
|
||||
setAuthInfo(`Подключение по коду без дополнительного пароля включено. TTL: ${payload?.ttlSeconds || 180} сек.`);
|
||||
setStatus(status, 'Дополнительный пароль убран. Подключение по коду теперь работает без него.', 'info');
|
||||
await removeAdditionalPassword();
|
||||
} catch (error) {
|
||||
const message = toUserMessage(error, 'Не удалось убрать дополнительный пароль.');
|
||||
setAuthError(message);
|
||||
@ -407,8 +408,28 @@ export function render({ navigate }) {
|
||||
const password = String(dialogPasswordInput.value || '');
|
||||
const confirm = String(dialogPasswordConfirmInput.value || '');
|
||||
const currentMode = dialogMode;
|
||||
if (!password) {
|
||||
setStatus(status, 'Введите дополнительный пароль.', 'error');
|
||||
if (!password && !confirm) {
|
||||
const shouldRemove = window.confirm('Пароль не задан. Хотите убрать дополнительный пароль?');
|
||||
if (!shouldRemove) {
|
||||
setStatus(status, 'Введите пароль или отмените изменение.', 'error');
|
||||
return;
|
||||
}
|
||||
dialogSaveBtn.disabled = true;
|
||||
try {
|
||||
await removeAdditionalPassword();
|
||||
closePasswordDialog();
|
||||
renderSettingsCard();
|
||||
} catch (error) {
|
||||
const message = toUserMessage(error, 'Не удалось убрать дополнительный пароль.');
|
||||
setAuthError(message);
|
||||
setStatus(status, message, 'error');
|
||||
} finally {
|
||||
dialogSaveBtn.disabled = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!password || !confirm) {
|
||||
setStatus(status, 'Заполните пароль и подтверждение пароля.', 'error');
|
||||
return;
|
||||
}
|
||||
if (password !== confirm) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user