X
Thinta lapha ukuze uye kuveshini yamakhalekhukhwini kusayithi.

Isithangami Sabeseki

HOWTO: disable master password auto prompt dynamically

Kuphostiwe

Hi, this is not question but an answer :) While I was trying to figure out how I could get rid of the master password prompt that pops up on every page that I once saved the password for (because I often don't want to login on these pages, just take a look), I found many people asking this. The solution was the MasterPasswordPlus addon for Firefox which stopped working with Quantum.

So here's how to do it with webextensions. Please note that I did that just for myself and will not publish it because I'm to lazy to add all the error handling, do updates etc. I just provide this as is, and whoever wants to use it locally or maybe make an addon from it: please go ahead and use the code any way you want! I also post it here so that it can be found in Google for other people looking for this.

With these two files (get your own icons please) you will have a webextension that shows a little icon in the URL bar. When you click it, the "Remember logins and passwords for websites" options in the preferences will toggle on and off. When it's off, you won't be asked for the master password on sites that you stored before. When it's on, you get the popup asking for it. When it was off and you want your password filled in on a page, you have to switch it on and reload the page.

Very basic functionality, but maybe someone has fun extending it.

cu, Frank

manifest.json:


{
  "description": "Dis-/enable the master password popup",
  "manifest_version": 2,
  "name": "NewMasterPasswordPlus",
  "version": "1.0",
  "icons": { },

  "applications": {
    "gecko": {
      "id": "YourEmail@gmail.com"
    }
  },

  "permissions": [
    "activeTab",
    "tabs",
    "privacy"
  ],


  "background": {
    "scripts": ["background.js"]
  },

  "page_action": {
    "default_icon": "icons/true.png",
    "browser_style": true
  }
  
}

background.js:


function setIcon(tab, state){
  if (state===true) {
    browser.pageAction.setIcon({tabId: tab.id, path: "icons/true.png"});
  } else {
    browser.pageAction.setIcon({tabId: tab.id, path: "icons/false.png"});
  }
  browser.pageAction.show(tab.id);
}

function updateIcon(tab) {
  var state=getState();
  state.then((got) => {
      setIcon(tab,got.value);
    });
}

function getState() {
  var getting = browser.privacy.services.passwordSavingEnabled.get({});
  return getting;
}

 

function toggleState(tab) {
  var getting = browser.privacy.services.passwordSavingEnabled.get({});
  getting.then((got) => {
      console.log('got:'+got.value);
      if ((got.levelOfControl === "controlled_by_this_extension") ||
	  (got.levelOfControl === "controllable_by_this_extension")) {
	var setting = browser.privacy.services.passwordSavingEnabled.set({
	  value: !got.value
	      });
	setting.then(() => { updateTabs();});
      } else {
	console.log("Not able to set passwordSavingEnabled");
      }
    });
}



/* Update icon on all tabs */
function updateTabs(){
  var gettingAllTabs = browser.tabs.query({});
  gettingAllTabs.then((tabs) => {
      var state=getState();
      state.then((got) => {
	  for (let tab of tabs) {
	    setIcon(tab,got.value);
	  }
	});
      
    });
}


/* Each time a tab is updated, reset the page action for that tab. */
browser.tabs.onUpdated.addListener((id, changeInfo, tab) => {
    updateIcon(tab);
  });

/* Toggle when the page action is clicked. */
browser.pageAction.onClicked.addListener(toggleState);


/* When first loaded, initialize the page action for all tabs. */
updateTabs();
Hi, this is not question but an answer :) While I was trying to figure out how I could get rid of the master password prompt that pops up on every page that I once saved the password for (because I often don't want to login on these pages, just take a look), I found many people asking this. The solution was the MasterPasswordPlus addon for Firefox which stopped working with Quantum. So here's how to do it with webextensions. Please note that I did that just for myself and will not publish it because I'm to lazy to add all the error handling, do updates etc. I just provide this as is, and whoever wants to use it locally or maybe make an addon from it: please go ahead and use the code any way you want! I also post it here so that it can be found in Google for other people looking for this. With these two files (get your own icons please) you will have a webextension that shows a little icon in the URL bar. When you click it, the "Remember logins and passwords for websites" options in the preferences will toggle on and off. When it's off, you won't be asked for the master password on sites that you stored before. When it's on, you get the popup asking for it. When it was off and you want your password filled in on a page, you have to switch it on and reload the page. Very basic functionality, but maybe someone has fun extending it. cu, Frank manifest.json: ---------------------- <pre><nowiki>{ "description": "Dis-/enable the master password popup", "manifest_version": 2, "name": "NewMasterPasswordPlus", "version": "1.0", "icons": { }, "applications": { "gecko": { "id": "YourEmail@gmail.com" } }, "permissions": [ "activeTab", "tabs", "privacy" ], "background": { "scripts": ["background.js"] }, "page_action": { "default_icon": "icons/true.png", "browser_style": true } } </nowiki></pre> background.js: ---------------------- <pre><nowiki>function setIcon(tab, state){ if (state===true) { browser.pageAction.setIcon({tabId: tab.id, path: "icons/true.png"}); } else { browser.pageAction.setIcon({tabId: tab.id, path: "icons/false.png"}); } browser.pageAction.show(tab.id); } function updateIcon(tab) { var state=getState(); state.then((got) => { setIcon(tab,got.value); }); } function getState() { var getting = browser.privacy.services.passwordSavingEnabled.get({}); return getting; } function toggleState(tab) { var getting = browser.privacy.services.passwordSavingEnabled.get({}); getting.then((got) => { console.log('got:'+got.value); if ((got.levelOfControl === "controlled_by_this_extension") || (got.levelOfControl === "controllable_by_this_extension")) { var setting = browser.privacy.services.passwordSavingEnabled.set({ value: !got.value }); setting.then(() => { updateTabs();}); } else { console.log("Not able to set passwordSavingEnabled"); } }); } /* Update icon on all tabs */ function updateTabs(){ var gettingAllTabs = browser.tabs.query({}); gettingAllTabs.then((tabs) => { var state=getState(); state.then((got) => { for (let tab of tabs) { setIcon(tab,got.value); } }); }); } /* Each time a tab is updated, reset the page action for that tab. */ browser.tabs.onUpdated.addListener((id, changeInfo, tab) => { updateIcon(tab); }); /* Toggle when the page action is clicked. */ browser.pageAction.onClicked.addListener(toggleState); /* When first loaded, initialize the page action for all tabs. */ updateTabs();</nowiki></pre>

Okulungisiwe ngu cor-el

Isicaphuno

Eminye Imininingwane Yohlelo

Fakela amapulagi

  • Shockwave Flash 32.0 r0

Isisebenziso

  • I-ejenti Engumsebenzisi: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

Eminye Imininingwane

Umnikazi wombuzo

Hmm, too bad some of the indents and line breaks got crippled, the editor window didn't offer any code tags or sth. Anyway, you will be able to get it right in an editor :)

Hmm, too bad some of the indents and line breaks got crippled, the editor window didn't offer any code tags or sth. Anyway, you will be able to get it right in an editor :)
Ingabe lokhu kube usizo kuwena?
Isicaphuno
Buza umbuzo

Kufanele ulogele ukungena ku-akhawunti yakho ukuze uphendule amaphosti. Uyacelwauqale umbuzo omusha, uma ungekabi nayo i-akhawunti namanje.