Показывать записи на пользователя в виджете таблицы в App Maker - PullRequest
1 голос
/ 07 марта 2019

Я почти закончил с моим первым приложением App Maker (многому научился, спасибо за помощь!). В настоящее время приложение собирает временные метки, когда пользователи входят и выходят с рабочего сайта. Поскольку время между отъездом и возвращением может составлять несколько часов, и поскольку App Maker основан на браузере, у меня изначально были проблемы, когда пользователь не смог завершить запись и нажать кнопку Time_IN. Я решил эту проблему, переместив кнопку Time IN во всплывающее окно, прикрепленное к странице записей, поэтому, когда пользователь вернулся к работе, он мог открыть запись, нажмите Time IN и быть на их пути. Просто, правда?

New Time IN method

Моя проблема сейчас заключается в том, что пользователи не могли видеть свои собственные записи на странице UserRecords , если я не сделал их администраторами, но затем он предоставляет доступ к полной таблице не только самостоятельно, показывая все записи для всех пользователей. Изначально в навигационном меню был фрагмент кода, который я удалил:

(@user.roles).indexOf('Admins', 'Managers') !== -1

но я не уверен, что что-то пропустил, поскольку проблема по-прежнему частично основана на роли пользователя? Вот изображение полей источника данных, в этом приложении только две модели: GatePass (как показано на рисунке) и Directory (для выбора пользователя).

Datasource Fields

Экспорт выглядит следующим образом (и идея состоит в том, чтобы каждый пользователь получал свои собственные данные, а не всю исходную таблицу):

Export data

Кроме того, именно так теперь выглядит страница ввода пользователей (если она помогает), мне удалось заставить пользователя автоматически заполнять record.Email = Session.getActiveUser().getEmail(); в onBeforeCreate:

User Entry Latest

В двух словах, пользователь должен видеть свои записи только на странице UserRecords , чтобы они могли получить доступ и завершить отправку. То же самое относится и к их экспорту. Может кто-нибудь помочь, пожалуйста?

1 Ответ

1 голос
/ 07 марта 2019

В вашей модели перейдите на вкладку ДАННЫЕ . Если у вас есть более одного источника данных, то вы должны выбрать правильный. Обязательно снимите флажок Автоматически загружать данные .

enter image description here

Далее перейдите на страницу, где расположена таблица. Затем на таблицу onAttach событие помещается следующее:

var ds = widget.datasource;
if(!app.user.role.Admins){
  ds.query.filters.Email._equals = app.user.email;
}
ds.load();

Это должно сработать. Что касается вопроса о разрешениях с ролью администратора, убедитесь, что модель имеет соответствующие разрешения. Для этого перейдите на модель БЕЗОПАСНОСТЬ и убедитесь, что вы установили правильные разрешения.

enter image description here

Рекомендации:

https://developers.google.com/appmaker/security/secure-app-data https://developers.google.com/appmaker/models/datasources

...