X
Tap here to go to the mobile version of the site.

Support Forum

HOWTO: disable master password auto prompt dynamically

Posted

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>

Modified by cor-el

Quote

Additional System Details

Installed Plug-ins

  • Shockwave Flash 32.0 r0

Application

  • User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0

More Information

Question owner

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 :)
Was this helpful to you?
Quote
Ask a question

You must log in to your account to reply to posts. Please start a new question, if you do not have an account yet.