@@ -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
@@ -77,8 +81,7 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
77
81
})
78
82
return database.User {}, false
79
83
}
80
- //nolint:gocritic // System needs to be able to get user from param.
81
- user , err := db .GetUserByID (dbauthz .AsSystemRestricted (ctx ), apiKey .UserID )
84
+ user , err := db .GetUserByID (ctx , apiKey .UserID )
82
85
if httpapi .Is404Error (err ) {
83
86
httpapi .ResourceNotFound (rw )
84
87
return database.User {}, false
@@ -94,8 +97,7 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
94
97
}
95
98
96
99
if userID , err := uuid .Parse (userQuery ); err == nil {
97
- //nolint:gocritic // If the userQuery is a valid uuid
98
- user , err = db .GetUserByID (dbauthz .AsSystemRestricted (ctx ), userID )
100
+ user , err = db .GetUserByID (ctx , userID )
99
101
if err != nil {
100
102
httpapi .Write (ctx , rw , http .StatusBadRequest , codersdk.Response {
101
103
Message : userErrorMessage ,
@@ -106,8 +108,8 @@ func extractUserContext(ctx context.Context, db database.Store, rw http.Response
106
108
return user , true
107
109
}
108
110
109
- // nolint:gocritic // Try as a username last
110
- user , err := db .GetUserByEmailOrUsername (dbauthz . AsSystemRestricted ( ctx ) , database.GetUserByEmailOrUsernameParams {
111
+ // Try as a username last
112
+ user , err := db .GetUserByEmailOrUsername (ctx , database.GetUserByEmailOrUsernameParams {
111
113
Username : userQuery ,
112
114
})
113
115
if err != nil {
0 commit comments