diff --git a/js/gdm/util.js b/js/gdm/util.js index fc7df2706..af1357466 100644 --- a/js/gdm/util.js +++ b/js/gdm/util.js @@ -8,6 +8,7 @@ const Signals = imports.signals; const Batch = imports.gdm.batch; const Fprint = imports.gdm.fingerprint; const OVirt = imports.gdm.oVirt; +const Vmware = imports.gdm.vmware; const Main = imports.ui.main; const Params = imports.misc.params; const SmartcardManager = imports.misc.smartcardManager; @@ -161,6 +162,7 @@ var ShellUserVerifier = class { this._credentialManagers = {}; this._credentialManagers[OVirt.SERVICE_NAME] = OVirt.getOVirtCredentialsManager(); + this._credentialManagers[Vmware.SERVICE_NAME] = Vmware.getVmwareCredentialsManager(); for (let service in this._credentialManagers) { if (this._credentialManagers[service].token) { diff --git a/js/gdm/vmware.js b/js/gdm/vmware.js new file mode 100644 index 000000000..20d57e8a2 --- /dev/null +++ b/js/gdm/vmware.js @@ -0,0 +1,54 @@ +// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- +/* exported getVmwareCredentialsManager */ + +const Gio = imports.gi.Gio; +const Signals = imports.signals; +const Credential = imports.gdm.credentialManager; + +const dbusPath = '/org/vmware/viewagent/Credentials'; +const dbusInterface = 'org.vmware.viewagent.Credentials'; + +var SERVICE_NAME = 'gdm-vmwcred'; + +const VmwareCredentialsIface = ' \ + \ + \ + \ + \ + \ +'; + + +const VmwareCredentialsInfo = Gio.DBusInterfaceInfo.new_for_xml(VmwareCredentialsIface); + +let _vmwareCredentialsManager = null; + +function VmwareCredentials() { + var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session, + g_interface_name: VmwareCredentialsInfo.name, + g_interface_info: VmwareCredentialsInfo, + g_name: dbusInterface, + g_object_path: dbusPath, + g_flags: Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES }); + self.init(null); + return self; +} + +var VmwareCredentialsManager = class VmwareCredentialsManager extends Credential.CredentialManager { + constructor() { + super(SERVICE_NAME); + this._credentials = new VmwareCredentials(); + this._credentials.connectSignal('UserAuthenticated', + (proxy, sender, [token]) => { + this.token = token; + }); + } +}; +Signals.addSignalMethods(VmwareCredentialsManager.prototype); + +function getVmwareCredentialsManager() { + if (!_vmwareCredentialsManager) + _vmwareCredentialsManager = new VmwareCredentialsManager(); + + return _vmwareCredentialsManager; +} diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml index cf9bd8ddf..2289a2dde 100644 --- a/js/js-resources.gresource.xml +++ b/js/js-resources.gresource.xml @@ -7,6 +7,7 @@ gdm/loginDialog.js gdm/oVirt.js gdm/credentialManager.js + gdm/vmware.js gdm/realmd.js gdm/util.js