在受到权限控制时访问breeze导航属性

时间:2015-01-27 07:25:42

标签: javascript breeze user-permissions navigation-properties extended-properties

假设我有两个实体位置和假期。假期与位置相关联。因此,在微风中,我可以编写如下的查询来检索与特定位置相关的假期:

 return EntityQuery.from('GetLocationById')
           .withParameters({ clientId: clientId, locationId : locationId })
           .extend("Holidays")
           .using(self.manager)
           .execute()
           .then(querySucceeded, this._queryFailed);

但是,此数据检索是基于权限的。即地点和假期有两种权限。可能是因为用户拥有位置许可,但他可能没有假期权限。无论如何我仍然可以使用extend()方法来检索假期,同时考虑权限?或者,在检查权限后,我是否必须在控制器中公开一个单独的方法来检索假期?

1 个答案:

答案 0 :(得分:1)

在您的示例中,您正在调用名为GetLocationById的控制器操作,而您正在寻找的行为是让操作返回该位置(如果用户有权访问位置)作为相关假期(如果用户有权参加假期)。

一种方法是不在实体查询中使用expand,而是让服务器根据用户权限决定是否包含假日。例如:

public Location GetLocationById(id) 
{
    var query = context.Locations;
    if (user can access holidays)
        query = query.Include('Holidays');
    return query.Where(l => l.Id == id).SingleOrDefault();
}

我在这里做了很多假设 - 如果我误解了,请原谅我。

相关问题