shellEntry: Support lockdown of "Show Text" menu in password entries

Some deployments require being able to prevent users from showing
the password they're currently typing.

This commit adds support for that kind of lockdown.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/687
This commit is contained in:
Ray Strode 2019-08-21 15:06:46 -04:00 committed by Florian Müllner
parent f5f9bd2e5e
commit 0a935b13b8

View File

@ -1,17 +1,24 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported addContextMenu CapsLockWarning */
const { Clutter, GObject, Pango, Shell, St } = imports.gi;
const { Clutter, Gio, GObject, Pango, Shell, St } = imports.gi;
const BoxPointer = imports.ui.boxpointer;
const Main = imports.ui.main;
const Params = imports.misc.params;
const PopupMenu = imports.ui.popupMenu;
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const DISABLE_SHOW_PASSWORD_KEY = 'disable-show-password';
var EntryMenu = class extends PopupMenu.PopupMenu {
constructor(entry) {
super(entry, 0, St.Side.TOP);
this._lockdownSettings = new Gio.Settings({ schema_id: LOCKDOWN_SCHEMA });
this._lockdownSettings.connect(`changed::${DISABLE_SHOW_PASSWORD_KEY}`,
this._applyLockdownSettings.bind(this));
this._entry = entry;
this._clipboard = St.Clipboard.get_default();
@ -39,6 +46,20 @@ var EntryMenu = class extends PopupMenu.PopupMenu {
item.connect('activate', this._onPasswordActivated.bind(this));
this.addMenuItem(item);
this._passwordItem = item;
this._applyLockdownSettings();
}
_applyLockdownSettings() {
if (!this._passwordItem)
return;
let passwordDisabled = this._lockdownSettings.get_boolean(DISABLE_SHOW_PASSWORD_KEY);
this._passwordItem.visible = !passwordDisabled;
this._entry.show_peek_icon = !passwordDisabled;
if (passwordDisabled)
this._entry.password_visible = false;
}
open(animate) {