diff --git a/pkg/registry/apis/iam/legacy/user.go b/pkg/registry/apis/iam/legacy/user.go index fc79f9d4e3f..0319abc1520 100644 --- a/pkg/registry/apis/iam/legacy/user.go +++ b/pkg/registry/apis/iam/legacy/user.go @@ -259,13 +259,24 @@ func (s *legacySQLStore) ListUserTeams(ctx context.Context, ns claims.NamespaceI var lastID int64 for rows.Next() { t := UserTeam{} - err := rows.Scan(&t.ID, &t.UID, &t.Name, &t.Permission) + + // regression: team_member.permission has been nulled in some instances + // Team memberships created before the permission column was added will have a NULL value + var nullablePermission *int64 + err := rows.Scan(&t.ID, &t.UID, &t.Name, &nullablePermission) if err != nil { return nil, err } - lastID = t.ID + if nullablePermission != nil { + t.Permission = team.PermissionType(*nullablePermission) + } else { + // treat NULL as member permission + t.Permission = team.PermissionType(0) + } + res.Items = append(res.Items, t) + lastID = t.ID if len(res.Items) > int(query.Pagination.Limit)-1 { res.Continue = lastID res.Items = res.Items[0 : len(res.Items)-1]