Index: gnome-shell-41.3/js/gdm/loginDialog.js =================================================================== --- gnome-shell-41.3.orig/js/gdm/loginDialog.js +++ gnome-shell-41.3/js/gdm/loginDialog.js @@ -1043,6 +1043,29 @@ var LoginDialog = GObject.registerClass( } _onSessionOpened(client, serviceName) { + if (this._user.get_num_sessions_anywhere() > 1) { + this._authPrompt.setMessage(null, + _('Sorry, you have to log out a previous session first. Multiple logins are not supported.'), + GdmUtil.MessageType.ERROR); + // TODO: The following logic relies on the unverified fact that + // `AuthPrompt::_onVerificationComplete` seems to always run after + // current handler. This might root from the interaction between + // greeter and verifier, both are external programs. + this._authPrompt.verificationStatus = AuthPrompt.AuthPromptStatus.VERIFIED_BUT_FORBIDDEN; + this._authPrompt.cancelButton.reactive = true; + + // NOTE: Failed Attempts as references + // + // NOTE: reset is too heavy, it skips the error prompt all together + // this._authPrompt.reset(); + // + // NOTE: Diconnect at this stage is not working + // + // this._authPrompt._userVerifier.disconnect(this._authPrompt._userVerifierCompleteId); + + return; + } + this._authPrompt.finish(() => this._startSession(serviceName)); }