Как реализовать `protectedFields` в Parse-Server? - PullRequest
1 голос
/ 27 мая 2019

Я считаю, что это новая функция в Parse-Server.

По умолчанию поле email класса User считается защищенным полем, что означает, что для email по умолчанию установлено значение read: false, write: false для общего доступа. Но каждое другое поле в классе User имеет значение read: true, write: false

В Github я видел этот пример:

export type ClassLevelPermissions = {
find?: { [string]: boolean },
count?: { [string]: boolean },
get?: { [string]: boolean },
create?: { [string]: boolean },
update?: { [string]: boolean },
delete?: { [string]: boolean },
addField?: { [string]: boolean },
readUserFields?: string[],
writeUserFields?: string[],

// new feature
protectedFields?: { [string]: boolean }
};

Например, для класса _User, если сервер был инициализирован с помощью userSensitiveFields: ['email', 'sin', 'phone'], это будет эквивалентно:

{
// CLP for the class ... other 
protectedFields: { "*": ["email", "sin"] }
};

Теперь, если вы хотите, чтобы роль модератора могла видеть электронную почту пользователя, но не грех и администратор, который может все это прочитать

{
 protectedFields: { 
   "*": ["email", "sin"],
   "role:moderator": ["sin"],
   "role:admin": []
 }
};

Увидев этот пример, я все еще не понял, где именно реализовать protectedFields. Я реализую это в моем приложении index.js или main.js и т. Д.? Может кто-нибудь дать мне пример того, как я могу установить поле: phoneNum, чтобы иметь protectedField аналогично email по умолчанию?

1 Ответ

1 голос
/ 27 мая 2019

Это опция при инициализации сервера разбора. Смотрите параметр protectedField здесь: http://parseplatform.org/parse-server/api/master/ParseServerOptions.html

Я не знаю точно, где / как вы используете свой сервер Parse, но он должен выглядеть примерно так:

var express = require('express');
var ParseServer = require('parse-server').ParseServer;
var app = express();

var api = new ParseServer({
  databaseURI: 'mongodb://localhost:27017/dev',
  cloud: '/home/myApp/cloud/main.js',
  appId: 'myAppId',
  masterKey: 'myMasterKey',
  fileKey: 'optionalFileKey',
  serverURL: 'http://localhost:1337/parse'
  protectedFields: {
    _User: {
      "*": ["email", "sin"],
      "role:moderator": ["sin"],
      "role:admin": []
    }
  }
});

app.use('/parse', api);

app.listen(1337, function() {
  console.log('parse-server-example running on port 1337.');
});
...