есть ли поддержка для пометки событий как доступных только для чтения либо в CalDAV, либо в ical (icalendar)

Я просмотрел спецификацию iCalendar http://tools.ietf.org/html/rfc5545 и спецификации CalDAV http://tools.ietf.org/html/rfc4791 в поисках информации о том, как чтобы пометить событие, отправляемое с нашего сервера календаря на iPhone, как «доступное только для чтения» (не редактируемое), когда iPhone подключается к нашему серверу с использованием протокола CalDAV. Но ответ не выпрыгивает из меня.

Другими словами, пользователь iPhone получает через учетную запись CalDAV кучу событий. Обычно они могут редактировать любое из этих событий. Однако мы хотим, чтобы некоторые из них были доступны только для чтения. Я знаю, что мы можем использовать возможность iPhone для добавления учетной записи подписки .ics, но на самом деле мы не хотим этого делать, потому что для этого требуется, чтобы пользователь iPhone добавил ОБА учетную запись подписки CalDAV и .ics.

Мы используем SabreDAV в качестве нашего сервера CalDAV.

Мой технический коллега попросил меня разобраться в этом, поэтому я прошу помощи у сообщества Stackoverflow.

Любая помощь или подсказки будут очень признательны.


person Bill Caswell    schedule 21.08.2012    source источник


Ответы (2)


После того, как вы отправили файл пользователю, он должен разобраться с ним, так что...

Я бы сказал, что нет способа защитить встречу/событие от модификации.

Однако вы можете разместить весь календарь самостоятельно и, если у пользователя есть Outlook или аналогичный, подписаться на этот RSS-канал.

Это одна идея... но для защиты того, что вы им отправляете? Весьма сомнительно. Просто не сомневайтесь, они изменяют только свою копию ваших данных, а не сами исходные данные.

person whiskeyfur    schedule 04.09.2012

1/ Вы можете использовать общие календари и пригласить пользователя только для чтения. Однако у пользователя будет 2 календаря: собственный и общий. Тем не менее, это та же учетная запись CalDAV, поэтому у пользователя есть только один флажок, чтобы выбрать его.

2/ Я не пробовал ACL, но, возможно, вы сможете с ним поиграться.

3/ В крайнем случае вы можете отредактировать Sabre\CalDAV\Backend\PDO::updateCalendarObject и deleteCalendarObject и добавить свои условия. Но на данный момент это очень низкий уровень (этот класс даже не знает, кто вносит изменения). Я не рекомендую это.

person KrisWebDev    schedule 01.05.2016