(connection: ExecutorServerConnection)
| 2414 | // recognize a re-login to the SAME account (update in place) versus a |
| 2415 | // different account on the same host (needs its own profile). |
| 2416 | const oauthAccountIdentity = (connection: ExecutorServerConnection): string | null => { |
| 2417 | const auth = connection.auth; |
| 2418 | if (!auth || auth.kind !== "oauth") return null; |
| 2419 | const claims = decodeAccessTokenClaims(auth.accessToken); |
| 2420 | const sub = typeof claims?.sub === "string" ? claims.sub : undefined; |
| 2421 | const org = typeof claims?.org_id === "string" ? claims.org_id : undefined; |
| 2422 | return sub && org ? `${connection.origin}|${sub}|${org}` : null; |
| 2423 | }; |
| 2424 | |
| 2425 | // Name a login's profile by the ACCOUNT it authenticates (email, falling back |
| 2426 | // to user id), not the hostname, so two accounts on the same server get |
no test coverage detected