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="configForm tabPage hidden" id="configPage" >
<div class="buttons"> <div class="buttons">
<button id="resetForm">ReloadConfig</button> <button id="resetForm">ReloadConfig</button>
<button id="forgetPass">ForgetPass</button>
<button id="changeConfig">Save&Restart</button> <button id="changeConfig">Save&Restart</button>
<button id="factoryReset">FactoryReset</button> <button id="factoryReset">FactoryReset</button>
</div> </div>
@ -92,6 +93,13 @@
<div id="adminPassHint"></div> <div id="adminPassHint"></div>
<div id="adminPassError" ></div> <div id="adminPassError" ></div>
<input id="adminPassInput" type="password"> <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"> <div class="overlayButtons">
<button id="adminPassCancel">Cancel</button> <button id="adminPassCancel">Cancel</button>
<button id="adminPassOk">OK</button> <button id="adminPassOk">OK</button>

View File

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