Raeesaa
07/11/2018, 8:19 AMtype User {
id: ID! @unique
username: String!
password: String!
memberships: [Membership!]!
...
...
}
type Blog {
id: ID! @unique
name: String!
isPublished: Boolean @default(value: "false")
...
...
}
type Membership {
id: ID! @unique
user: User!
blog: Blog
...
...
}
Now, what I need to do is, whenever query for getting blogs is made, I need to return only those blogs which user has membership of and have been published. Also, I need to respect arguments passed by client in query.
Current resolver code without any authorization check looks like
blogs: async (_, args, ctx: Context, info) => {
return ctx.prisma.query.blogs(args, info)
}
One way of achieving this would have been filtering out records returned by Prisma binding call but there is no guarantee that id and isPublished flag would be returned in response.nilan
07/11/2018, 9:34 AMnilan
07/11/2018, 9:34 AMRaeesaa
07/11/2018, 9:44 AMnilan
07/11/2018, 9:44 AMnilan
07/11/2018, 9:45 AMblogs
query from your schema?Raeesaa
07/11/2018, 9:45 AM{
id
username
...
...
memberships [{
id
blog {
id
isPublished
}
},
...]
}
nilan
07/11/2018, 9:46 AMRaeesaa
07/11/2018, 9:47 AMnilan
07/11/2018, 9:47 AMcan you share thequery from your schema?blogs
Raeesaa
07/11/2018, 9:47 AMRaeesaa
07/11/2018, 9:49 AMblogs(where: BlogWhereInput, orderBy: BlogOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Blog]! @isAuthenticated
nilan
07/11/2018, 9:51 AMwhere
like so:
AND: [{isPublished: true}, {memberships_some: { user: { id: userId } } }, {...incomingWhere}]
Raeesaa
07/11/2018, 9:56 AMisPublished
flag is passed in where as wellnilan
07/11/2018, 9:57 AMisPublished: false
it would return no elements.nilan
07/11/2018, 9:57 AMnilan
07/11/2018, 9:57 AMblogs
querynilan
07/11/2018, 9:58 AMpublishedBlogsByUser
query without any filter argumentsRaeesaa
07/11/2018, 10:02 AMRaeesaa
07/11/2018, 10:02 AM