Skip to content

Commit c4b8cc8

Browse files
committed
Support owner param in link handler
1 parent eed4676 commit c4b8cc8

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@
44

55
## Unreleased
66

7+
### Added
8+
9+
- Support an "owner" parameter when launching an IDE from the dashboard. This
10+
makes it possible to reliably connect to the right workspace in the case where
11+
multiple users are using the same workspace name and the workspace filter is
12+
configured to show multiple users' workspaces. This requires an updated
13+
Gateway module that includes the new "owner" parameter.
14+
715
## 2.15.0 - 2024-10-04
816

917
### Added

src/main/kotlin/com/coder/gateway/util/LinkHandler.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,15 @@ open class LinkHandler(
5252
// TODO: Show a dropdown and ask for the workspace if missing.
5353
val workspaceName = parameters.workspace() ?: throw MissingArgumentException("Query parameter \"$WORKSPACE\" is missing")
5454

55+
// The owner was added to support getting into another user's workspace
56+
// but may not exist if the Coder Gateway module is out of date. If no
57+
// owner is included, assume the current user.
58+
val owner = (parameters.owner() ?: client.me.username).ifBlank { client.me.username }
59+
5560
val workspaces = client.workspaces()
5661
val workspace =
5762
workspaces.firstOrNull {
58-
it.name == workspaceName
63+
it.ownerName == owner && it.name == workspaceName
5964
} ?: throw IllegalArgumentException("The workspace $workspaceName does not exist")
6065

6166
when (workspace.latestBuild.status) {

src/main/kotlin/com/coder/gateway/util/LinkMap.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ private const val TYPE = "type"
55
const val URL = "url"
66
const val TOKEN = "token"
77
const val WORKSPACE = "workspace"
8+
const val OWNER = "owner"
89
const val AGENT_NAME = "agent"
910
const val AGENT_ID = "agent_id"
1011
private const val FOLDER = "folder"
@@ -24,6 +25,8 @@ fun Map<String, String>.token() = this[TOKEN]
2425

2526
fun Map<String, String>.workspace() = this[WORKSPACE]
2627

28+
fun Map<String, String>.owner() = this[OWNER]
29+
2730
fun Map<String, String?>.agentName() = this[AGENT_NAME]
2831

2932
fun Map<String, String?>.agentID() = this[AGENT_ID]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy