Switch ACL to Relay Global Id (#6495)

This commit is contained in:
Antoine Cormouls
2020-03-23 09:35:42 +01:00
committed by GitHub
parent 1b8f057904
commit 312a4bc812
3 changed files with 22 additions and 4 deletions

View File

@@ -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,
@@ -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({
@@ -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: [
@@ -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',

View File

@@ -14,6 +14,7 @@ import {
GraphQLBoolean,
GraphQLUnionType,
} from 'graphql';
import { toGlobalId } from 'graphql-relay';
import { GraphQLUpload } from 'graphql-upload';
class TypeValidationError extends Error {
@@ -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,
});

View File

@@ -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,