mirror of https://github.com/coder/coder.git
fix: Use proper endpoint for user workspaces (#1356)
This was a silly mistake in a prior PR, so the code wasn't actually being called!
This commit is contained in:
parent
b675aec4dd
commit
dc115b8ca0
|
@ -258,7 +258,7 @@ func New(options *Options) (http.Handler, func()) {
|
|||
})
|
||||
r.Get("/gitsshkey", api.gitSSHKey)
|
||||
r.Put("/gitsshkey", api.regenerateGitSSHKey)
|
||||
r.Get("/workspaces", api.workspacesByOwner)
|
||||
r.Get("/workspaces", api.workspacesByUser)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
|
@ -485,7 +485,7 @@ func (q *fakeQuerier) GetWorkspacesByOrganizationIDs(_ context.Context, req data
|
|||
workspaces := make([]database.Workspace, 0)
|
||||
for _, workspace := range q.workspaces {
|
||||
for _, id := range req.Ids {
|
||||
if workspace.ID != id {
|
||||
if workspace.OrganizationID != id {
|
||||
continue
|
||||
}
|
||||
if workspace.Deleted != req.Deleted {
|
||||
|
@ -494,9 +494,6 @@ func (q *fakeQuerier) GetWorkspacesByOrganizationIDs(_ context.Context, req data
|
|||
workspaces = append(workspaces, workspace)
|
||||
}
|
||||
}
|
||||
if len(workspaces) == 0 {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
return workspaces, nil
|
||||
}
|
||||
|
||||
|
@ -514,9 +511,6 @@ func (q *fakeQuerier) GetWorkspacesByOwnerID(_ context.Context, req database.Get
|
|||
}
|
||||
workspaces = append(workspaces, workspace)
|
||||
}
|
||||
if len(workspaces) == 0 {
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
return workspaces, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -820,7 +820,8 @@ func (api *api) workspacesByUser(rw http.ResponseWriter, r *http.Request) {
|
|||
organizationIDs := make([]uuid.UUID, 0)
|
||||
for _, organization := range organizations {
|
||||
err = api.Authorizer.AuthorizeByRoleName(r.Context(), user.ID.String(), roles.Roles, rbac.ActionRead, rbac.ResourceWorkspace.All().InOrg(organization.ID))
|
||||
if errors.Is(err, &rbac.UnauthorizedError{}) {
|
||||
var apiErr *rbac.UnauthorizedError
|
||||
if xerrors.As(err, &apiErr) {
|
||||
continue
|
||||
}
|
||||
if err != nil {
|
||||
|
@ -832,7 +833,8 @@ func (api *api) workspacesByUser(rw http.ResponseWriter, r *http.Request) {
|
|||
organizationIDs = append(organizationIDs, organization.ID)
|
||||
}
|
||||
|
||||
workspaces, err := api.Database.GetWorkspacesByOrganizationIDs(r.Context(), database.GetWorkspacesByOrganizationIDsParams{
|
||||
workspaceIDs := map[uuid.UUID]struct{}{}
|
||||
allWorkspaces, err := api.Database.GetWorkspacesByOrganizationIDs(r.Context(), database.GetWorkspacesByOrganizationIDsParams{
|
||||
Ids: organizationIDs,
|
||||
})
|
||||
if err != nil {
|
||||
|
@ -841,7 +843,27 @@ func (api *api) workspacesByUser(rw http.ResponseWriter, r *http.Request) {
|
|||
})
|
||||
return
|
||||
}
|
||||
apiWorkspaces, err := convertWorkspaces(r.Context(), api.Database, workspaces)
|
||||
for _, ws := range allWorkspaces {
|
||||
workspaceIDs[ws.ID] = struct{}{}
|
||||
}
|
||||
userWorkspaces, err := api.Database.GetWorkspacesByOwnerID(r.Context(), database.GetWorkspacesByOwnerIDParams{
|
||||
OwnerID: user.ID,
|
||||
})
|
||||
if err != nil {
|
||||
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
|
||||
Message: fmt.Sprintf("get workspaces for user: %s", err),
|
||||
})
|
||||
return
|
||||
}
|
||||
for _, ws := range userWorkspaces {
|
||||
_, exists := workspaceIDs[ws.ID]
|
||||
if exists {
|
||||
continue
|
||||
}
|
||||
allWorkspaces = append(allWorkspaces, ws)
|
||||
}
|
||||
|
||||
apiWorkspaces, err := convertWorkspaces(r.Context(), api.Database, allWorkspaces)
|
||||
if err != nil {
|
||||
httpapi.Write(rw, http.StatusInternalServerError, httpapi.Response{
|
||||
Message: fmt.Sprintf("convert workspaces: %s", err),
|
||||
|
|
Loading…
Reference in New Issue