@@ -826,47 +826,11 @@ func (api *api) createUser(ctx context.Context, req codersdk.CreateUserRequest)
826
826
})
827
827
}
828
828
829
- //
830
829
func (api * api ) workspacesByUser (rw http.ResponseWriter , r * http.Request ) {
831
830
user := httpmw .UserParam (r )
832
831
roles := httpmw .UserRoles (r )
833
832
834
- organizations , err := api .Database .GetOrganizationsByUserID (r .Context (), user .ID )
835
- if err != nil {
836
- httpapi .Write (rw , http .StatusInternalServerError , httpapi.Response {
837
- Message : fmt .Sprintf ("get organizations: %s" , err ),
838
- })
839
- return
840
- }
841
- organizationIDs := make ([]uuid.UUID , 0 )
842
- for _ , organization := range organizations {
843
- err = api .Authorizer .ByRoleName (r .Context (), user .ID .String (), roles .Roles , rbac .ActionRead , rbac .ResourceWorkspace .All ().InOrg (organization .ID ))
844
- var apiErr * rbac.UnauthorizedError
845
- if xerrors .As (err , & apiErr ) {
846
- continue
847
- }
848
- if err != nil {
849
- httpapi .Write (rw , http .StatusInternalServerError , httpapi.Response {
850
- Message : fmt .Sprintf ("authorize: %s" , err ),
851
- })
852
- return
853
- }
854
- organizationIDs = append (organizationIDs , organization .ID )
855
- }
856
-
857
- workspaceIDs := map [uuid.UUID ]struct {}{}
858
- allWorkspaces , err := api .Database .GetWorkspacesByOrganizationIDs (r .Context (), database.GetWorkspacesByOrganizationIDsParams {
859
- Ids : organizationIDs ,
860
- })
861
- if err != nil {
862
- httpapi .Write (rw , http .StatusInternalServerError , httpapi.Response {
863
- Message : fmt .Sprintf ("get workspaces for organizations: %s" , err ),
864
- })
865
- return
866
- }
867
- for _ , ws := range allWorkspaces {
868
- workspaceIDs [ws .ID ] = struct {}{}
869
- }
833
+ allWorkspaces := make ([]database.Workspace , 0 )
870
834
userWorkspaces , err := api .Database .GetWorkspacesByOwnerID (r .Context (), database.GetWorkspacesByOwnerIDParams {
871
835
OwnerID : user .ID ,
872
836
})
@@ -877,11 +841,11 @@ func (api *api) workspacesByUser(rw http.ResponseWriter, r *http.Request) {
877
841
return
878
842
}
879
843
for _ , ws := range userWorkspaces {
880
- _ , exists := workspaceIDs [ws .ID ]
881
- if exists {
882
- continue
844
+ err = api .Authorizer .ByRoleName (r .Context (), user .ID .String (), roles .Roles , rbac .ActionRead ,
845
+ rbac .ResourceWorkspace .InOrg (ws .OrganizationID ).WithOwner (ws .OwnerID .String ()).WithID (ws .ID .String ()))
846
+ if err == nil {
847
+ allWorkspaces = append (allWorkspaces , ws )
883
848
}
884
- allWorkspaces = append (allWorkspaces , ws )
885
849
}
886
850
887
851
apiWorkspaces , err := convertWorkspaces (r .Context (), api .Database , allWorkspaces )
0 commit comments