Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix(GraphQL): Change variable name generation for interface auth rules #7559

Merged
merged 2 commits into from
Mar 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions graphql/resolve/auth_delete_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -671,28 +671,28 @@
"Author.posts": [
{"uid": "uid(x)"}
],
"uid": "uid(Author_5)"
"uid": "uid(Author_7)"
}]
dgquery: |-
query {
x as deletePost(func: uid(PostRoot)) {
uid
Author_5 as Post.author
Author_7 as Post.author
}
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(Answer_Auth4)))
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(Answer_Auth6)))
Post_1 as var(func: uid(0x1, 0x2)) @filter(type(Post))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth4 as var(func: uid(Answer_1)) @cascade {
Answer_5 as var(func: type(Answer))
Answer_Auth6 as var(func: uid(Answer_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
Expand Down Expand Up @@ -745,9 +745,9 @@
x as deleteA(func: uid(ARoot)) {
uid
}
ARoot as var(func: uid(A_1)) @filter((uid(B_1)))
ARoot as var(func: uid(A_1)) @filter((uid(B_2)))
A_1 as var(func: uid(0x1, 0x2)) @filter(type(A))
B_1 as var(func: type(B))
B_2 as var(func: type(B))
}

- name: "Delete Type Having Graph Traversal Auth Rules on Interface."
Expand Down
84 changes: 42 additions & 42 deletions graphql/resolve/auth_query_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1457,27 +1457,27 @@
Post.text : Post.text
dgraph.uid : uid
}
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(FbPost_Auth4) OR uid(Answer_Auth5)))
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(FbPost_Auth6) OR uid(Answer_Auth8)))
Post_1 as var(func: type(Post))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
FbPost_1 as var(func: type(FbPost))
FbPost_Auth4 as var(func: uid(FbPost_1)) @cascade {
FbPost_5 as var(func: type(FbPost))
FbPost_Auth6 as var(func: uid(FbPost_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth5 as var(func: uid(Answer_1)) @cascade {
Answer_7 as var(func: type(Answer))
Answer_Auth8 as var(func: uid(Answer_7)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
Expand All @@ -1503,27 +1503,27 @@
Post.text : Post.text
dgraph.uid : uid
}
PostRoot as var(func: uid(Post_1), orderdesc: Post.text, first: 10, offset: 5) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(FbPost_Auth4) OR uid(Answer_Auth5)))
PostRoot as var(func: uid(Post_1), orderdesc: Post.text, first: 10, offset: 5) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(FbPost_Auth6) OR uid(Answer_Auth8)))
Post_1 as var(func: type(Post)) @filter(eq(Post.text, "A Post"))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
FbPost_1 as var(func: type(FbPost))
FbPost_Auth4 as var(func: uid(FbPost_1)) @cascade {
FbPost_5 as var(func: type(FbPost))
FbPost_Auth6 as var(func: uid(FbPost_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth5 as var(func: uid(Answer_1)) @cascade {
Answer_7 as var(func: type(Answer))
Answer_Auth8 as var(func: uid(Answer_7)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
Expand Down Expand Up @@ -1563,20 +1563,20 @@
Post.text : Post.text
dgraph.uid : uid
}
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(Answer_Auth4)))
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(Answer_Auth6)))
Post_1 as var(func: type(Post))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth4 as var(func: uid(Answer_1)) @cascade {
Answer_5 as var(func: type(Answer))
Answer_Auth6 as var(func: uid(Answer_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
Expand All @@ -1601,20 +1601,20 @@
Post.text : Post.text
dgraph.uid : uid
}
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(Answer_Auth4)))
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(Answer_Auth6)))
Post_1 as var(func: uid(0x1))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth4 as var(func: uid(Answer_1)) @cascade {
Answer_5 as var(func: type(Answer))
Answer_Auth6 as var(func: uid(Answer_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "Random")) {
Author.name : Author.name
Expand Down Expand Up @@ -1651,11 +1651,11 @@
A.fieldA : A.fieldA
dgraph.uid : uid
}
ARoot as var(func: uid(A_1)) @filter((uid(B_1) OR uid(C_Auth2)))
ARoot as var(func: uid(A_1)) @filter((uid(B_2) OR uid(C_Auth4)))
A_1 as var(func: type(A))
B_1 as var(func: type(B))
C_1 as var(func: type(C))
C_Auth2 as var(func: uid(C_1)) @filter(eq(C.fieldC, true)) @cascade {
B_2 as var(func: type(B))
C_3 as var(func: type(C))
C_Auth4 as var(func: uid(C_3)) @filter(eq(C.fieldC, true)) @cascade {
C.id : uid
}
}
Expand All @@ -1675,9 +1675,9 @@
A.fieldA : A.fieldA
dgraph.uid : uid
}
ARoot as var(func: uid(A_1)) @filter((uid(B_1)))
ARoot as var(func: uid(A_1)) @filter((uid(B_2)))
A_1 as var(func: type(A))
B_1 as var(func: type(B))
B_2 as var(func: type(B))
}

-
Expand Down Expand Up @@ -1853,20 +1853,20 @@
Post.text : Post.text
dgraph.uid : uid
}
PostRoot as var(func: uid(Post_1)) @filter((uid(Question_Auth2) OR uid(FbPost_Auth3) OR uid(Answer_1)))
PostRoot as var(func: uid(Post_1)) @filter((uid(Question_Auth3) OR uid(FbPost_Auth5) OR uid(Answer_6)))
Post_1 as var(func: uid(0x123))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
Question.text : Post.text
}
FbPost_1 as var(func: type(FbPost))
FbPost_Auth3 as var(func: uid(FbPost_1)) @cascade {
FbPost_4 as var(func: type(FbPost))
FbPost_Auth5 as var(func: uid(FbPost_4)) @cascade {
FbPost.author : Post.author @filter(eq(Author.name, "ADMIN")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_6 as var(func: type(Answer))
checkPwd(func: uid(PostRoot)) @filter(type(Post)) {
pwd as checkpwd(Post.pwd, "something")
}
Expand Down Expand Up @@ -1994,9 +1994,9 @@
Vehicle.owner : Vehicle.owner
dgraph.uid : uid
}
VehicleRoot as var(func: uid(Vehicle_1)) @filter((uid(Car_1)))
VehicleRoot as var(func: uid(Vehicle_1)) @filter((uid(Car_2)))
Vehicle_1 as var(func: type(Vehicle))
Car_1 as var(func: type(Car))
Car_2 as var(func: type(Car))
}

-
Expand Down
34 changes: 17 additions & 17 deletions graphql/resolve/auth_update_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -837,27 +837,27 @@
x as updatePost(func: uid(PostRoot)) {
uid
}
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth2) AND uid(Question_Auth3)) OR uid(FbPost_Auth4) OR uid(Answer_Auth5)))
PostRoot as var(func: uid(Post_1)) @filter(((uid(Question_Auth3) AND uid(Question_Auth4)) OR uid(FbPost_Auth6) OR uid(Answer_Auth8)))
Post_1 as var(func: uid(0x123, 0x456)) @filter(type(Post))
Question_1 as var(func: type(Question))
Question_Auth2 as var(func: uid(Question_1)) @filter(eq(Question.answered, true)) @cascade {
Question_2 as var(func: type(Question))
Question_Auth3 as var(func: uid(Question_2)) @filter(eq(Question.answered, true)) @cascade {
Question.id : uid
}
Question_Auth3 as var(func: uid(Question_1)) @cascade {
Question_Auth4 as var(func: uid(Question_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
}
}
FbPost_1 as var(func: type(FbPost))
FbPost_Auth4 as var(func: uid(FbPost_1)) @cascade {
FbPost_5 as var(func: type(FbPost))
FbPost_Auth6 as var(func: uid(FbPost_5)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth5 as var(func: uid(Answer_1)) @cascade {
Answer_7 as var(func: type(Answer))
Answer_Auth8 as var(func: uid(Answer_7)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
Expand Down Expand Up @@ -892,17 +892,17 @@
x as updatePost(func: uid(PostRoot)) {
uid
}
PostRoot as var(func: uid(Post_1)) @filter((uid(FbPost_Auth2) OR uid(Answer_Auth3)))
PostRoot as var(func: uid(Post_1)) @filter((uid(FbPost_Auth3) OR uid(Answer_Auth5)))
Post_1 as var(func: uid(0x123, 0x456)) @filter(type(Post))
FbPost_1 as var(func: type(FbPost))
FbPost_Auth2 as var(func: uid(FbPost_1)) @cascade {
FbPost_2 as var(func: type(FbPost))
FbPost_Auth3 as var(func: uid(FbPost_2)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
}
}
Answer_1 as var(func: type(Answer))
Answer_Auth3 as var(func: uid(Answer_1)) @cascade {
Answer_4 as var(func: type(Answer))
Answer_Auth5 as var(func: uid(Answer_4)) @cascade {
dgraph.type
Post.author : Post.author @filter(eq(Author.name, "user1")) {
Author.name : Author.name
Expand Down Expand Up @@ -964,8 +964,8 @@
x as updateA(func: uid(ARoot)) {
uid
}
ARoot as var(func: uid(A_1)) @filter((uid(B_1) OR uid(C_1)))
ARoot as var(func: uid(A_1)) @filter((uid(B_2) OR uid(C_3)))
A_1 as var(func: uid(0x123, 0x456)) @filter(type(A))
B_1 as var(func: type(B))
C_1 as var(func: type(C))
}
B_2 as var(func: type(B))
C_3 as var(func: type(C))
}
4 changes: 2 additions & 2 deletions graphql/resolve/query_rewriter.go
Original file line number Diff line number Diff line change
Expand Up @@ -728,8 +728,8 @@ func (authRw *authRewriter) addAuthQueries(
continue
}

// Form Query Like Todo1 as var(func: type(Todo))
queryVar := object.Name() + "_1"
// Form Query Like Todo_1 as var(func: type(Todo))
queryVar := authRw.varGen.Next(object, "", "", authRw.isWritingAuth)
varQry := &gql.GraphQuery{
Attr: "var",
Var: queryVar,
Expand Down