Comments (3)
Launching a deep link waits until the frontend app is ready:
teleport/web/packages/teleterm/src/mainProcess/windowsManager.ts
Lines 180 to 184 in 606bcb1
Currently the readiness is signaled after WorkspacesService.prototype.restorePersistedState
resolves, which includes a call to restore the previous workspace. This is what triggers the login modal for the previous cluster and waits until that modal is closed.
The solution would be to:
- Move
this.setActiveWorkspace
out ofWorkspacesService.prototype.restorePersistedState
intoshowStartupModalsAndNotifications
. (restorePersistedState
is called only once in the app). - Signal readiness after
restorePersistedState
but beforesetActiveWorkspace
.- Similarly,
isInitialized
ofWorkspacesService
should be set to true afterrestorePersistedState
but beforesetActiveWorkspace
. This affects VNet only though, not deep links.
- Similarly,
- Make
setActiveWorkspace
accept a signal. WindowsManagerIpc.SignalUserInterfaceReadiness
should return anAbortController
that aborts the signal passed tosetActiveWorkspace
inshowStartupModalsAndNotifications
.WindowsManager.prototype.launchDeepLink
should pass the abort controller toDeepLinksService.prototype.launchDeepLink
in the render process.- So far, each deep link handler already sets the correct workspace by calling
loginAndSetActiveWorkspace
. That method should abort the abort controller and show the modal for the right workspace. We cannot always abort the controller, because in the future there might be deep links that are not related to a particular workspace.
- So far, each deep link handler already sets the correct workspace by calling
Instead of passing an abort controller back and forth between processes through WindowsManagerIpc.SignalUserInterfaceReadiness
, perhaps we can create a single abort controller in AppContext
(called, idk, restoreWorkspaceAbortController
) and then pass it to both DeepLinksService
and showStartupModalsAndNotifications
.
from teleport.
As @avatus put it, in much fewer words:
- Connect opens and tries to open any sessions
- Sees the expired session and tries to reauth
- Now that its done "starting", it opens the deep link
from teleport.
It's probably the same, but we should also consider what happens with distinct users for the same cluster.
from teleport.
Related Issues (20)
- `TestAccessRequestCacheBasics` flakiness HOT 1
- Deleting a role which is assigned by an access list can prevent logging into a cluster
- Add SAML logout endpoint
- teleport-cluster-auth-test job failing when upgrading from 15.2.5 to 15.3.0 HOT 4
- Update SSO references to Microsoft Entra ID HOT 1
- Add repo for Ubuntu 24.04 LTS (Noble Numbat) HOT 1
- Prometheus Metrics for `failed_login_attempts_total` are not incrementing. HOT 1
- Usage in Self Hosted clusters UI HOT 1
- Reload systemd config after an upgrade
- SSH sessions running `tmux` don't play back correctly using `tsh play` HOT 3
- Web UI: remove free-form login entry
- Include min password length for local users in local connector info
- Autocomplete Reviewers field in Just in Time Access Requests HOT 1
- [helm] Don't hard-code `.cluster.local` in the `teleport-cluster` chart
- Reject outdated agents by default
- Teleport can't connect to S3 FIPS endpoint HOT 1
- Host user creation does not update user groups in `keep` mode
- Phone Number Change HOT 1
- Support AWS CodeCommit through Teleport Application Access
- docs: show starting fluentd in datadog log exporter integration.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from teleport.