add option to remember the admin password

This commit is contained in:
wellenvogel 2021-12-13 21:46:00 +01:00
parent 30b23a72ce
commit feb6b8860a
2 changed files with 37 additions and 1 deletions

View File

@ -51,6 +51,7 @@
<div class="configForm tabPage hidden" id="configPage" >
<div class="buttons">
<button id="resetForm">ReloadConfig</button>
<button id="forgetPass">ForgetPass</button>
<button id="changeConfig">Save&Restart</button>
<button id="factoryReset">FactoryReset</button>
</div>
@ -92,6 +93,13 @@
<div id="adminPassHint"></div>
<div id="adminPassError" ></div>
<input id="adminPassInput" type="password">
<div class="row">
<span class="label">remember me</span>
<select id="adminPassKeep">
<option value="true">on</option>
<option value="false" selected>off</option>
</select>
</div>
<div class="overlayButtons">
<button id="adminPassCancel">Cancel</button>
<button id="adminPassOk">OK</button>

View File

@ -229,6 +229,7 @@ function changeConfig() {
forEl('#adminPassInput', function (el) {
el.valu = newAdminPass;
});
saveAdminPass(newAdminPass,true);
}
alertRestart();
}
@ -1041,7 +1042,25 @@ function adminPassCancel(){
forEl('#adminPassOverlay',function(el){el.classList.add('hidden')});
forEl('#adminPassInput',function(el){el.value=''});
}
function saveAdminPass(pass,forceIfSet){
forEl('#adminPassKeep',function(el){
try{
let old=localStorage.getItem('adminPass');
if (el.value == 'true' || (forceIfSet && old !== undefined)){
localStorage.setItem('adminPass',pass);
}
else{
localStorage.removeItem('adminPass');
}
}catch (e){}
});
}
function forgetPass(){
localStorage.removeItem('adminPass');
forEl('#adminPassInput',function(el){
el.value='';
});
}
function ensurePass(){
return new Promise(function(resolve,reject){
if (! needAdminPass) {
@ -1064,6 +1083,7 @@ function ensurePass(){
verifyPass(pe.value)
.then(function(pass){
forEl('#adminPassOverlay',function(el){el.classList.add('hidden')});
saveAdminPass(pe.value);
resolve(pass);
})
.catch(function(err){
@ -1458,6 +1478,14 @@ window.addEventListener('load', function () {
}
createDashboard();
loadConfigDefinitions();
try{
let storedPass=localStorage.getItem('adminPass');
if (storedPass){
forEl('#adminPassInput',function(el){
el.value=storedPass;
});
}
}catch(e){}
let statusPage=document.getElementById('statusPageContent');
if (statusPage){
let even=true;