fix: add workaround for org check (if projection is not up-to-date) (#2800)

This commit is contained in:
Livio Amstutz 2021-12-07 15:54:33 +01:00 committed by GitHub
parent 303d4945a7
commit 211dc7c21f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,6 +2,7 @@ package authz
import ( import (
"context" "context"
"time"
"github.com/caos/zitadel/internal/api/grpc" "github.com/caos/zitadel/internal/api/grpc"
http_util "github.com/caos/zitadel/internal/api/http" http_util "github.com/caos/zitadel/internal/api/http"
@ -62,13 +63,6 @@ func VerifyTokenAndCreateCtxData(ctx context.Context, token, orgID string, t *To
ctx, span := tracing.NewSpan(ctx) ctx, span := tracing.NewSpan(ctx)
defer func() { span.EndWithError(err) }() defer func() { span.EndWithError(err) }()
if orgID != "" {
err = t.ExistsOrg(ctx, orgID)
if err != nil {
return CtxData{}, errors.ThrowPermissionDenied(nil, "AUTH-Bs7Ds", "Organisation doesn't exist")
}
}
userID, clientID, agentID, prefLang, resourceOwner, err := verifyAccessToken(ctx, token, t, method) userID, clientID, agentID, prefLang, resourceOwner, err := verifyAccessToken(ctx, token, t, method)
if err != nil { if err != nil {
return CtxData{}, err return CtxData{}, err
@ -87,6 +81,21 @@ func VerifyTokenAndCreateCtxData(ctx context.Context, token, orgID string, t *To
if orgID == "" { if orgID == "" {
orgID = resourceOwner orgID = resourceOwner
} }
err = t.ExistsOrg(ctx, orgID)
if err != nil {
for i := 0; i < 3; i++ { //TODO: workaround if org projection is not yet up-to-date
time.Sleep(500 * time.Millisecond)
err := t.ExistsOrg(ctx, orgID)
if err == nil {
break
}
}
if err != nil {
return CtxData{}, errors.ThrowPermissionDenied(nil, "AUTH-Bs7Ds", "Organisation doesn't exist")
}
}
return CtxData{ return CtxData{
UserID: userID, UserID: userID,
OrgID: orgID, OrgID: orgID,