Switch ACL to Relay Global Id (#6495)
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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,
|
||||
});
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user