Skip to content

Commit 7d5ebc2

Browse files
committed
Add after auth in connect operations
1 parent d38937d commit 7d5ebc2

File tree

3 files changed

+10
-35
lines changed

3 files changed

+10
-35
lines changed

packages/graphql/src/translate/queryAST/ast/operations/ConnectOperation.ts

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -188,13 +188,6 @@ export class ConnectOperation extends MutationOperation {
188188
});
189189

190190
const authClausesBefore = this.getAuthorizationClauses(nestedContext);
191-
const sourceAuthClausesBefore = this.getSourceAuthorizationClausesBefore(context);
192-
const bothAuthClausesBefore: Cypher.Clause[] = [];
193-
if (authClausesBefore.length === 0 && sourceAuthClausesBefore.length > 0) {
194-
bothAuthClausesBefore.push(new Cypher.With("*"), ...sourceAuthClausesBefore);
195-
} else {
196-
bothAuthClausesBefore.push(Cypher.utils.concat(...authClausesBefore, ...sourceAuthClausesBefore));
197-
}
198191

199192
const authClausesAfter = this.getAuthorizationClausesAfter(nestedContext);
200193
const sourceAuthClausesAfter = this.getSourceAuthorizationClausesAfter(context);
@@ -205,11 +198,8 @@ export class ConnectOperation extends MutationOperation {
205198
}
206199

207200
const clauses = Cypher.utils.concat(
208-
// required in: packages/graphql/tests/integration/directives/authorization/roles.int.test.ts
209-
// without when: AFTER adjustment failing in: packages/graphql/tests/integration/issues/3929.int.test.ts
210-
211201
matchClause,
212-
...bothAuthClausesBefore, // THESE ARE "BEFORE" AUTH
202+
...authClausesBefore,
213203
...mutationSubqueries,
214204
connectClause,
215205
...authClauses
@@ -269,21 +259,6 @@ export class ConnectOperation extends MutationOperation {
269259
return [];
270260
}
271261

272-
private getSourceAuthorizationClausesBefore(context: QueryASTContext): Cypher.Clause[] {
273-
const validationsAfter: Cypher.VoidProcedure[] = [];
274-
for (const authFilter of this.sourceAuthFilters) {
275-
const validationAfter = authFilter.getValidation(context, "BEFORE");
276-
if (validationAfter) {
277-
validationsAfter.push(validationAfter);
278-
}
279-
}
280-
281-
if (validationsAfter.length > 0) {
282-
return [new Cypher.With("*"), ...validationsAfter];
283-
}
284-
return [];
285-
}
286-
287262
private transpileAuthClauses(context: QueryASTContext): {
288263
selections: (Cypher.With | Cypher.Match)[];
289264
subqueries: Cypher.Clause[];

packages/graphql/src/translate/queryAST/factory/Operations/ConnectFactory.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ import { NodeSelectionPattern } from "../../ast/selection/SelectionPattern/NodeS
3434
import type { CallbackBucket } from "../../utils/callback-bucket";
3535
import { isConcreteEntity } from "../../utils/is-concrete-entity";
3636
import { isInterfaceEntity } from "../../utils/is-interface-entity";
37+
import { isUnionEntity } from "../../utils/is-union-entity";
3738
import { raiseAttributeAmbiguity } from "../../utils/raise-attribute-ambiguity";
3839
import type { QueryASTFactory } from "../QueryASTFactory";
39-
import { isUnionEntity } from "../../utils/is-union-entity";
4040

4141
export class ConnectFactory {
4242
private queryASTFactory: QueryASTFactory;
@@ -142,14 +142,13 @@ export class ConnectFactory {
142142
context,
143143
operation: connect,
144144
});
145-
// this wasn't in the original code - but should it be?
146-
// if (isConcreteEntity(relationship.source)) {
147-
// this.addSourceEntityAuthorization({
148-
// entity: relationship.source,
149-
// context,
150-
// operation: connect,
151-
// });
152-
// }
145+
if (isConcreteEntity(relationship.source)) {
146+
this.addSourceEntityAuthorization({
147+
entity: relationship.source,
148+
context,
149+
operation: connect,
150+
});
151+
}
153152

154153
asArray(input).forEach((inputItem) => {
155154
const { whereArg, connectArg } = this.parseConnectArgs(inputItem);

packages/graphql/tests/integration/directives/authorization/bind.int.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,7 @@ describe("auth/bind", () => {
636636

637637
await testHelper.executeCypher(`
638638
CREATE (:${Post} {id: "${postId}"})
639+
CREATE (:${User} {id: "not bound"})
639640
`);
640641

641642
const token = createBearerToken(secret, { sub: userId });

0 commit comments

Comments
 (0)