我正在Google App Maker中构建一个应用程序,我想知道如何保护记录的特定字段,以使其仅对特定用户/角色可见。例如,假设我有一个Employee表,其中包含员工的姓名,姓氏,电子邮件和薪水。我希望所有用户都可以看到姓名,姓氏和电子邮件,但只有管理员可以看到员工薪水。我可以使用用户角色来保护UI,但是我的问题是,即使员工薪水没有出现在UI中,它仍然是从服务器中获取的,因此,如果确定足够的人,仍然可以访问它(例如,通过观察请求/响应)。 有没有一种方法可以保护基于用户角色的关系的特定字段?
答案 0 :(得分:0)
使用计算的模型(基于服务器端脚本)是此处的最佳选择。这样,将只提取您需要显示的数据。因此,以您的情况为例,我们可以使用一个名为 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;
}
这样,您可以控制是否仅当管理员时才退还工资。