Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:15.6:Update
gnome-shell.22883
gs-fate318433-prevent-same-account-multi-logins...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File gs-fate318433-prevent-same-account-multi-logins.patch of Package gnome-shell.22883
Index: gnome-shell-3.34.5/js/gdm/authPrompt.js =================================================================== --- gnome-shell-3.34.5.orig/js/gdm/authPrompt.js +++ gnome-shell-3.34.5/js/gdm/authPrompt.js @@ -25,7 +25,9 @@ var AuthPromptStatus = { NOT_VERIFYING: 0, VERIFYING: 1, VERIFICATION_FAILED: 2, - VERIFICATION_SUCCEEDED: 3 + VERIFICATION_SUCCEEDED: 3, + // NOTE fate#318433 extra state to track multi-login situation + VERIFIED_BUT_FORBIDDEN: 4 }; var BeginRequestType = { @@ -244,7 +246,13 @@ var AuthPrompt = class { } _onVerificationComplete() { + // NOTE update the spinning icon this.setActorInDefaultButtonWell(null); + + if (this.verificationStatus === AuthPromptStatus.VERIFIED_BUT_FORBIDDEN) { + this.cancelButton.reactive = true; + return; + } this.verificationStatus = AuthPromptStatus.VERIFICATION_SUCCEEDED; this.cancelButton.reactive = false; } Index: gnome-shell-3.34.5/js/gdm/loginDialog.js =================================================================== --- gnome-shell-3.34.5.orig/js/gdm/loginDialog.js +++ gnome-shell-3.34.5/js/gdm/loginDialog.js @@ -918,6 +918,8 @@ var LoginDialog = GObject.registerClass( this._authPrompt.updateSensitivity(false); let answer = this._authPrompt.getAnswer(); this._user = this._userManager.get_user(answer); + this._userLoginForbidden = + this._user.is_x_logged_in_remotely(); this._authPrompt.clear(); this._authPrompt.startSpinning(); this._authPrompt.begin({ userName: answer }); @@ -984,6 +986,8 @@ var LoginDialog = GObject.registerClass( let answer = this._authPrompt.getAnswer(); let domain_answer = this._domainMenuButton.getDomainUser(answer); this._user = this._userManager.get_user(domain_answer); + this._userLoginForbidden = + this._user.is_x_logged_in_remotely(); this._authPrompt.clear(); this._authPrompt.startSpinning(); this._authPrompt.begin({ userName: domain_answer}); @@ -1010,6 +1014,28 @@ var LoginDialog = GObject.registerClass( } _onSessionOpened(client, serviceName) { + if (this._user.get_num_sessions_anywhere() > 1) { + this._authPrompt.setMessage( + _('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; + + // 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)); } @@ -1189,6 +1215,7 @@ var LoginDialog = GObject.registerClass( _onUserListActivated(activatedItem) { this._user = activatedItem.user; + this._userLoginForbidden = this._user.is_x_logged_in_remotely(); this._updateCancelButton();
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor