доступ к свойствам навигации бриза, когда они контролируются разрешениями

Допустим, у меня есть две сущности Location и Holidays. Праздники связаны с местоположением. Таким образом, я могу написать следующий запрос для получения праздников, связанных с определенным местом:

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

Однако этот поиск данных основан на разрешениях. т.е. есть два разрешения для местоположений и праздников. Может случиться так, что, хотя у пользователя есть разрешение на местоположение, у него может не быть разрешений на праздники. Могу ли я в любом случае использовать метод extend() для получения праздников, в то же время учитывая разрешения? Или же мне нужно открыть отдельный метод в контроллере для получения выходных после проверки разрешений?




Ответы (1)


В вашем примере вы вызываете действие контроллера с именем GetLocationById, и поведение, которое вы ищете, состоит в том, чтобы действие возвращало местоположение (если у пользователя есть доступ к местоположениям), а также связанные праздники (если у пользователя есть доступ к каникулы).

Один из подходов заключается в том, чтобы не использовать расширение в запросе объекта, а вместо этого позволить серверу решать, включать ли праздники на основе разрешений пользователя. Например:

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();
}

Я делаю много предположений здесь - простите меня, если я неправильно понял.

person Jeremy Danyow    schedule 28.01.2015