Защита определенных полей записи в Google App Maker - PullRequest
0 голосов
/ 27 февраля 2019

Я создаю приложение в Google App Maker, и мне интересно, как я могу защитить определенные поля записи, чтобы сделать их видимыми только для определенных пользователей / ролей.Скажем, например, что у меня есть таблица Employee, содержащая имя, фамилию, адрес электронной почты и зарплату сотрудника.Я хочу, чтобы все пользователи могли видеть имя, фамилию и адрес электронной почты, но только администраторы могли видеть зарплату сотрудника.Я могу использовать роли пользователя для защиты пользовательского интерфейса, однако моя проблема заключается в том, что, даже если зарплата сотрудника не отображается в пользовательском интерфейсе, она все равно выбирается с сервера, поэтому кто-то может получить к ней доступ, если он был достаточно определен (например,соблюдение запросов / ответов).Есть ли способ защитить определенные поля отношения на основе пользовательских ролей?

1 Ответ

0 голосов
/ 12 марта 2019

Использование расчетной модели (основанной на сценарии на стороне сервера) является лучшим вариантом здесь.Таким образом, будут выбраны только те данные, которые вам нужно показать.Так что в вашем случае в качестве примера мы можем использовать расчетную модель с именем EmployeeInfo с полями name и salary .Серверный скрипт этого источника данных может содержать что-то вроде этого:

return getEmployeeInfo();

Тогда на вашем серверном скрипте вы можете иметь что-то вроде этого:

function getEmployeeInfo(){
  var userRoles = app.getActiveUserRoles(); 
  var query = app.models.Employees.newQuery();
  var allEmployees = query.run();

  var allRecs = [];
  for(var i=0; i<allEmployees.length; i++){
    var empInfo = app.models.EmployeeInfo.newRecord();
    var employee = allEmployees[i];
    empInfo.name = employee.name;
    if(userRoles.indexOf("Admins") > -1){
      empInfo.salary = employee.salary;
    }
    allRecs.push(userInfo);
  }
  return allRecs;
}

Таким образом, вы контролируете, будет ли зарплатабудет возвращено, только если это администратор.

...