@@ -20,6 +20,7 @@ import (
20
20
21
21
"github.com/coder/coder/coderd/audit"
22
22
"github.com/coder/coder/coderd/database"
23
+ "github.com/coder/coder/coderd/database/dbauthz"
23
24
"github.com/coder/coder/coderd/gitauth"
24
25
"github.com/coder/coder/coderd/httpapi"
25
26
"github.com/coder/coder/coderd/httpmw"
@@ -53,8 +54,9 @@ func (api *API) templateVersion(rw http.ResponseWriter, r *http.Request) {
53
54
return
54
55
}
55
56
57
+ // User can be the empty user if the caller does not have permission.
56
58
user , err := api .Database .GetUserByID (ctx , templateVersion .CreatedBy )
57
- if err != nil {
59
+ if err != nil && ! dbauthz . IsNotAuthorizedError ( err ) {
58
60
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
59
61
Message : "Internal error on fetching user." ,
60
62
Detail : err .Error (),
@@ -165,7 +167,7 @@ func (api *API) patchTemplateVersion(rw http.ResponseWriter, r *http.Request) {
165
167
}
166
168
167
169
user , err := api .Database .GetUserByID (ctx , templateVersion .CreatedBy )
168
- if err != nil {
170
+ if err != nil && ! dbauthz . IsNotAuthorizedError ( err ) {
169
171
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
170
172
Message : "Internal error on fetching user." ,
171
173
Detail : err .Error (),
@@ -843,7 +845,7 @@ func (api *API) templateVersionByName(rw http.ResponseWriter, r *http.Request) {
843
845
}
844
846
845
847
user , err := api .Database .GetUserByID (ctx , templateVersion .CreatedBy )
846
- if err != nil {
848
+ if err != nil && ! dbauthz . IsNotAuthorizedError ( err ) {
847
849
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
848
850
Message : "Internal error on fetching user." ,
849
851
Detail : err .Error (),
@@ -1012,7 +1014,7 @@ func (api *API) previousTemplateVersionByOrganizationTemplateAndName(rw http.Res
1012
1014
}
1013
1015
1014
1016
user , err := api .Database .GetUserByID (ctx , templateVersion .CreatedBy )
1015
- if err != nil {
1017
+ if err != nil && ! dbauthz . IsNotAuthorizedError ( err ) {
1016
1018
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
1017
1019
Message : "Internal error on fetching user." ,
1018
1020
Detail : err .Error (),
@@ -1325,7 +1327,7 @@ func (api *API) postTemplateVersionsByOrganization(rw http.ResponseWriter, r *ht
1325
1327
aReq .New = templateVersion
1326
1328
1327
1329
user , err := api .Database .GetUserByID (ctx , templateVersion .CreatedBy )
1328
- if err != nil {
1330
+ if err != nil && ! dbauthz . IsNotAuthorizedError ( err ) {
1329
1331
httpapi .Write (ctx , rw , http .StatusInternalServerError , codersdk.Response {
1330
1332
Message : "Internal error on fetching user." ,
1331
1333
Detail : err .Error (),
@@ -1404,14 +1406,20 @@ func (api *API) templateVersionLogs(rw http.ResponseWriter, r *http.Request) {
1404
1406
}
1405
1407
1406
1408
func convertTemplateVersion (version database.TemplateVersion , job codersdk.ProvisionerJob , user database.User , warnings []codersdk.TemplateVersionWarning ) codersdk.TemplateVersion {
1407
- createdBy := codersdk.User {
1408
- ID : user .ID ,
1409
- Username : user .Username ,
1410
- Email : user .Email ,
1411
- CreatedAt : user .CreatedAt ,
1412
- Status : codersdk .UserStatus (user .Status ),
1413
- Roles : []codersdk.Role {},
1414
- AvatarURL : user .AvatarURL .String ,
1409
+ // Only populate these fields if the user is not nil.
1410
+ // It is usually nil because the caller cannot access the user
1411
+ // resource in question.
1412
+ var createdBy codersdk.User
1413
+ if user .ID != uuid .Nil {
1414
+ createdBy = codersdk.User {
1415
+ ID : user .ID ,
1416
+ Username : user .Username ,
1417
+ Email : user .Email ,
1418
+ CreatedAt : user .CreatedAt ,
1419
+ Status : codersdk .UserStatus (user .Status ),
1420
+ Roles : []codersdk.Role {},
1421
+ AvatarURL : user .AvatarURL .String ,
1422
+ }
1415
1423
}
1416
1424
1417
1425
return codersdk.TemplateVersion {
0 commit comments