Скрипт создания логина DEPO: пароль из поля мастера подставляется в скрипт (передаётся только в теле POST, не сохраняется, кавычки экранируются)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -119,26 +119,40 @@ a.wstep:hover .bub { box-shadow:0 0 0 4px var(--accent-weak); }
|
||||
<li><b>чтение</b> учётных таблиц DEPO (лица, счета, остатки, бумаги) — для сверки переводов;</li>
|
||||
<li><b>запись только в таблицы обмена</b> <code>FTV_M2M*</code> — их права выдаются на следующем экране, вместе с созданием таблиц.</li>
|
||||
</ul>
|
||||
<p style="margin:0 0 6px">Вариант 1 — администратор создаёт логин сам с этими правами. Вариант 2 — передайте ему скрипт: в нём уже подставлены тип СУБД, база и имя логина из полей выше, нужно только заменить пароль.</p>
|
||||
<a id="wiz-login-dl" href="/admin/setup/fancy/depo-login/script.sql">Скачать скрипт создания логина</a>
|
||||
<p style="margin:0 0 6px">Вариант 1 — администратор создаёт логин сам с этими правами. Вариант 2 — передайте ему скрипт: в нём подставлены тип СУБД, база, имя логина и пароль из полей выше (если пароль не введён — впишите его в скрипт сами). Скрипт с паролем не храните.</p>
|
||||
<a id="wiz-login-dl" href="#">Скачать скрипт создания логина</a> <span class="muted" id="wiz-login-pwnote" style="font-size:12px"></span>
|
||||
<pre class="copyable" id="wiz-login-pre" style="max-height:260px;margin-top:6px;font-size:12px">…</pre>
|
||||
<p class="muted" style="margin:4px 0 0">После выполнения скрипта впишите логин и пароль в поля выше и нажмите «Проверить и далее».</p>
|
||||
</div>
|
||||
</details>
|
||||
<script>
|
||||
(function(){
|
||||
var f=document.currentScript.closest('form'), d=document.getElementById('wiz-login-help'), pre=document.getElementById('wiz-login-pre'), a=document.getElementById('wiz-login-dl');
|
||||
function q(){
|
||||
var t=f.querySelector('[name=db_type]'), db=f.querySelector('[name=depo_database]'), u=f.querySelector('[name=user]');
|
||||
return 'type='+encodeURIComponent(t?t.value:'mssql')+'&db='+encodeURIComponent(db&&db.value.trim()?db.value.trim():(db?db.placeholder:''))+'&login='+encodeURIComponent(u&&u.value.trim()?u.value.trim():'bj_user');
|
||||
var f=document.currentScript.closest('form'), d=document.getElementById('wiz-login-help'), pre=document.getElementById('wiz-login-pre'), a=document.getElementById('wiz-login-dl'), note=document.getElementById('wiz-login-pwnote');
|
||||
function val(n){ var e=f.querySelector('[name='+n+']'); return e?e.value:''; }
|
||||
function params(){
|
||||
var db=f.querySelector('[name=depo_database]');
|
||||
var p=new URLSearchParams();
|
||||
p.set('type', val('db_type')||'mssql');
|
||||
p.set('db', db&&db.value.trim()?db.value.trim():(db?db.placeholder:''));
|
||||
p.set('login', val('user').trim()||'bj_user');
|
||||
p.set('password', val('password')); // только в теле POST — не в адресе и не в журналах
|
||||
return p;
|
||||
}
|
||||
function upd(){
|
||||
a.href='/admin/setup/fancy/depo-login/script.sql?'+q();
|
||||
note.textContent = val('password') ? '— пароль из поля подставлен в скрипт' : '— пароль не введён: в скрипте заглушка, замените её';
|
||||
if(!d.open) return;
|
||||
fetch('/admin/setup/fancy/depo-login/script.sql?download=0&'+q(),{cache:'no-store'}).then(function(r){return r.text()}).then(function(t){pre.textContent=t}).catch(function(){});
|
||||
var p=params(); p.set('download','0');
|
||||
fetch('/admin/setup/fancy/depo-login/script.sql',{method:'POST',body:p,cache:'no-store'}).then(function(r){return r.text()}).then(function(t){pre.textContent=t}).catch(function(){});
|
||||
}
|
||||
a.addEventListener('click', function(e){
|
||||
e.preventDefault();
|
||||
var p=params(), fm=document.createElement('form');
|
||||
fm.method='POST'; fm.action='/admin/setup/fancy/depo-login/script.sql'; fm.style.display='none';
|
||||
p.forEach(function(v,k){ var i=document.createElement('input'); i.type='hidden'; i.name=k; i.value=v; fm.appendChild(i); });
|
||||
document.body.appendChild(fm); fm.submit(); fm.remove();
|
||||
});
|
||||
d.addEventListener('toggle',upd);
|
||||
['db_type','depo_database','user'].forEach(function(n){var e=f.querySelector('[name='+n+']'); if(e) e.addEventListener('change',upd);});
|
||||
['db_type','depo_database','user','password'].forEach(function(n){var e=f.querySelector('[name='+n+']'); if(e){ e.addEventListener('change',upd); e.addEventListener('input',function(){ clearTimeout(e._t); e._t=setTimeout(upd,400); }); }});
|
||||
upd();
|
||||
})();
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user