Совместное использование ссылок Ruby on Rails: Google Docs Style - PullRequest
6 голосов
/ 03 августа 2010

Как лучше всего дать пользователям возможность поделиться частной ссылкой , которая позволяет любому, кто щелкает по ней, просматривать определенную страницу / документ / элемент, для которого действуют ограничения конфиденциальности?

В моем случае:

Пользователь создает события, которые ограничены определенными группами отношений в базе данных (а именно: друзья, друзья друзей и т. Д.). У меня есть : before_filter в контроллере событий, который проверяет соответствие текущего пользователя, вошедшего в систему, чтобы убедиться, что у этого пользователя есть разрешение на просмотр события.Если они этого не делают, они загружаются на корневую страницу с сообщением об ошибке.

Однако я хочу, чтобы существовал особый сценарий, когда пользователь может создать событие с теми же настройками конфиденциальности и ДОПОЛНИТЕЛЬНО, иметь возможностьподелиться специальной ссылкой со своими друзьями по электронной почте, в Facebook и т. д. Эти пользователи НЕ нуждаются в учетной записи (но для ее регистрации необходимо будет создать учетную запись).Это важно, потому что есть также: before_filter в application_controller, который гарантирует, что пользователь вошел в систему.

Я думаю, что я могу кое-что сделать с маршрутизацией здесь ... Прямо сейчас у меня просто естьПростые / события / 72 настройки.Должны ли каждое событие иметь две разные ссылки: обычную и версию «специального кода», которая позволяет им обойти эти два: before_filter?

Что думают люди?

Ответы [ 2 ]

6 голосов
/ 03 августа 2010

Я согласен с ответом Дэвида Лёда (разделив эту проблему в другом контроллере).

Но для создания хэша я настоятельно рекомендую вам засолить хэш с какой-то секретной фразой.

require "digest"
Digest::SHA512.hexdigest("#{created_at}#{user_id}.mysupersonicsecretSALT")

Делая это, невозможно без знания секретной фразы вычислить хэши и проверить их на соответствие вашей системе, пока она не достигнет существующего.Если вы обрабатываете конфиденциальные данные, вы не должны быть ленивыми.

Приветствия,

Лукас

4 голосов
/ 03 августа 2010

У меня был бы отдельный контроллер, который использует хеш-значение для ссылки на событие.

Что-то простое, например хеш-файл create_at + user_id для создания уникальной ссылки.

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

...