@@ -40,7 +40,11 @@ func ExtractUserParam(db database.Store, redirectToLoginOnMe bool) func(http.Han
40
40
return func (next http.Handler ) http.Handler {
41
41
return http .HandlerFunc (func (rw http.ResponseWriter , r * http.Request ) {
42
42
ctx := r .Context ()
43
- user , ok := extractUserContext (ctx , db , rw , r , redirectToLoginOnMe )
43
+ // We need to call as SystemRestricted because this middleware is called from
44
+ // organizations/{organization}/members/{user}/ paths, and we need to allow
45
+ // org-admins to call these paths --- they might not have sitewide read permissions on users.
46
+ // nolint:gocritic
47
+ user , ok := extractUserContext (dbauthz .AsSystemRestricted (ctx ), db , rw , r , redirectToLoginOnMe )
44
48
if ! ok {
45
49
// response already handled
46
50
return
@@ -75,8 +79,7 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
75
79
})
76
80
return database.User {}, false
77
81
}
78
- //nolint:gocritic // System needs to be able to get user from param.
79
- user , err := db .GetUserByID (dbauthz .AsSystemRestricted (ctx ), apiKey .UserID )
82
+ user , err := db .GetUserByID (ctx , apiKey .UserID )
80
83
if httpapi .Is404Error (err ) {
81
84
httpapi .ResourceNotFound (rw )
82
85
return database.User {}, false
@@ -92,8 +95,7 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
92
95
}
93
96
94
97
if userID , err := uuid .Parse (userQuery ); err == nil {
95
- //nolint:gocritic // If the userQuery is a valid uuid
96
- user , err = db .GetUserByID (dbauthz .AsSystemRestricted (ctx ), userID )
98
+ user , err = db .GetUserByID (ctx , userID )
97
99
if err != nil {
98
100
httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
99
101
Message : userErrorMessage ,
@@ -104,8 +106,8 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
104
106
return user , true
105
107
}
106
108
107
- // nolint:gocritic // Try as a username last
108
- user , err := db .GetUserByEmailOrUsername (dbauthz . AsSystemRestricted ( ctx ) , database.GetUserByEmailOrUsernameParams {
109
+ // Try as a username last
110
+ user , err := db .GetUserByEmailOrUsername (ctx , database.GetUserByEmailOrUsernameParams {
109
111
Username : userQuery ,
110
112
})
111
113
if err != nil {
0 commit comments