Skip to content

Commit

Permalink
Switch ACL to Relay Global Id (#6495)
Browse files Browse the repository at this point in the history
  • Loading branch information
Moumouls authored Mar 23, 2020
1 parent 1b8f057 commit 312a4bc
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
19 changes: 16 additions & 3 deletions spec/ParseGraphQLServer.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const { SubscriptionClient } = require('subscriptions-transport-ws');
const { WebSocketLink } = require('apollo-link-ws');
const ApolloClient = require('apollo-client').default;
const gql = require('graphql-tag');
const { toGlobalId } = require('graphql-relay');
const {
GraphQLObjectType,
GraphQLString,
Expand Down Expand Up @@ -8284,6 +8285,18 @@ describe('ParseGraphQLServer', () => {

await parseGraphQLServer.parseGraphQLSchema.databaseController.schemaCache.clear();

const gqlUser = (
await apolloClient.query({
query: gql`
query getUser($id: ID!) {
user(id: $id) {
id
}
}
`,
variables: { id: user.id },
})
).data.user;
const {
data: { createSomeClass },
} = await apolloClient.mutate({
Expand Down Expand Up @@ -8317,7 +8330,7 @@ describe('ParseGraphQLServer', () => {
fields: {
ACL: {
users: [
{ userId: user.id, read: true, write: true },
{ userId: gqlUser.id, read: true, write: true },
{ userId: user2.id, read: true, write: false },
],
roles: [
Expand All @@ -8334,13 +8347,13 @@ describe('ParseGraphQLServer', () => {
__typename: 'ACL',
users: [
{
userId: user.id,
userId: toGlobalId('_User', user.id),
read: true,
write: true,
__typename: 'UserACL',
},
{
userId: user2.id,
userId: toGlobalId('_User', user2.id),
read: true,
write: false,
__typename: 'UserACL',
Expand Down
3 changes: 2 additions & 1 deletion src/GraphQL/loaders/defaultGraphQLTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
GraphQLBoolean,
GraphQLUnionType,
} from 'graphql';
import { toGlobalId } from 'graphql-relay';
import { GraphQLUpload } from 'graphql-upload';

class TypeValidationError extends Error {
Expand Down Expand Up @@ -553,7 +554,7 @@ const ACL = new GraphQLObjectType({
Object.keys(p).forEach(rule => {
if (rule !== '*' && rule.indexOf('role:') !== 0) {
users.push({
userId: rule,
userId: toGlobalId('_User', rule),
read: p[rule].read ? true : false,
write: p[rule].write ? true : false,
});
Expand Down
4 changes: 4 additions & 0 deletions src/GraphQL/transformers/mutation.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ const transformers = {
}
if (value.users) {
value.users.forEach(rule => {
const globalIdObject = fromGlobalId(rule.userId);
if (globalIdObject.type === '_User') {
rule.userId = globalIdObject.id;
}
parseACL[rule.userId] = {
read: rule.read,
write: rule.write,
Expand Down

0 comments on commit 312a4bc

Please sign in to comment.