我的第一个App Maker应用程序快要完成了(学到了很多东西,感谢到目前为止的帮助!)。当用户登录和退出工作站点时,该应用程序当前会收集时间戳数据。由于离开和返回之间的时间可能需要几个小时,而且由于App Maker是基于浏览器的,所以我最初遇到的问题是用户无法完成记录并点击Time_IN按钮。我通过将 Time IN 按钮移动到记录页面上的弹出窗口来解决此问题,因此当用户返回工作位置时,他们可以打开记录,点击 Time IN 并继续前进。很简单,对吧?
我现在的麻烦是,除非我让他们成为管理员,否则用户将无法在 UserRecords 页上看到他们自己的记录,但是这样一来,它不仅授予他们访问整个表的权限,还显示了所有用户的所有记录。导航菜单最初具有我删除的以下代码段:
(@user.roles).indexOf('Admins', 'Managers') !== -1
但是我不确定是否错过了某些内容,因为问题似乎仍然部分基于用户角色?这是数据源字段的图像,此应用程序中只有两种模型:GatePass(如图所示)和Directory(用于用户选择器)。
导出看起来像这样(并且想法是让每个用户获得他们自己的数据,而不是整个源表):
此外,这是用户输入页面现在的外观(如果有帮助),我设法在onBeforeCreate中使用record.Email = Session.getActiveUser().getEmail();
自动填充用户电子邮件:
简而言之,用户应该只在 UserRecords 页面上查看其记录,以便他们可以访问并完成其提交。他们的出口也是如此。谁能帮忙吗?
答案 0 :(得分:1)
在您的模型中,转到 DATASOURCES 标签。如果显示的数据源不止一个,则由您选择合适的数据源。确保取消选中自动加载数据选项。
接下来,转到表所在的页面。然后在表 onAttach 事件上输入以下内容:
var ds = widget.datasource;
if(!app.user.role.Admins){
ds.query.filters.Email._equals = app.user.email;
}
ds.load();
应该可以解决问题。关于管理员角色的权限问题,请确保模型具有适当的权限。为此,请使用模型的安全 标签,并确保设置适当的权限。
参考文献:
https://developers.google.com/appmaker/security/secure-app-data https://developers.google.com/appmaker/models/datasources