Compare commits

...

3 Commits

Author SHA1 Message Date
Pascal Fischer
e4fea16c9f fix test expectation 2025-04-02 17:10:14 +02:00
Pascal Fischer
b3ab142d2e allow admins to fetch users 2025-04-02 16:20:34 +02:00
Pascal Fischer
de457788ba return error when trying to use accountID path variable with PAT 2025-04-02 16:03:33 +02:00
3 changed files with 8 additions and 9 deletions

View File

@@ -142,6 +142,12 @@ func (m *AuthMiddleware) checkPATFromRequest(r *http.Request, auth []string) (*h
return r, fmt.Errorf("token expired")
}
if impersonate, ok := r.URL.Query()["account"]; ok && len(impersonate) == 1 {
if user.AccountID != impersonate[0] {
return r, fmt.Errorf("token is not valid for this account")
}
}
err = m.authManager.MarkPATUsed(ctx, pat.ID)
if err != nil {
return r, err

View File

@@ -239,16 +239,9 @@ func TestAuthMiddleware_Handler_Child(t *testing.T) {
},
},
{
name: "Valid PAT Token ignores child",
name: "Valid PAT Token returns forbidden for child",
path: "/test?account=xyz",
authHeader: "Token " + PAT,
expectedUserAuth: &nbcontext.UserAuth{
AccountId: accountID,
UserId: userID,
Domain: testAccount.Domain,
DomainCategory: testAccount.DomainCategory,
IsPAT: true,
},
},
{
name: "Valid JWT Token",

View File

@@ -805,7 +805,7 @@ func (am *DefaultAccountManager) GetUsersFromAccount(ctx context.Context, accoun
return nil, err
}
if err := am.permissionsManager.ValidateAccountAccess(ctx, accountID, initiatorUser, false); err != nil {
if err := am.permissionsManager.ValidateAccountAccess(ctx, accountID, initiatorUser, true); err != nil {
return nil, err
}