URL веб-подписки Rails с токеном аутентификации пользователя; - PullRequest
3 голосов
/ 01 ноября 2011

Я пытаюсь создать ссылку для пользователя моего приложения, чтобы использовать его для подписки на календари своего аккаунта. У меня есть ссылка, которая работает, которую я генерирую в rails calendar_publisher_lists_url (: format =>: ics,: only_path => false,: protocol => "web cal") который генерирует ссылку вроде webcal: //mywebsite.com/calendar.ics Однако это работает только в том случае, если пользователь вошел в систему. Мне нужно, чтобы ссылка работала, когда календарь автоматически обновляется, даже если пользователь не вошел в систему. Поэтому мне нужно создать ссылку, которая будет выглядеть следующим образом: webcal: //123@mywebsite.com/calendar.ics, где «123» - токен аутентификации для пользователя. Как мне сгенерировать этот URL?

Ответы [ 2 ]

1 голос
/ 03 декабря 2012

Что плохого в том, чтобы поместить его в URL как атрибут?

calendar_publisher_lists_url(:format => :ics, :only_path => false,:protocol => "webcal", :authentication_token => current_user.authentication_token)

webcal://mywebsite.com/calendar.ics?authentication_token=123

Я имею в виду, кроме вопроса безопасности ...

0 голосов
/ 04 декабря 2012

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

match '/calendar/:id/calendar_feed', to: 'calendar#calendar_feed', :as => 'calendar_feed_path'

Тогда в свой контроллер положи

def calendar_feed
  @user=User.find(params[:id])
  respond_to do |format|
    format.ics
  end
end

А затем добавьте шаблон представления, настройте его в соответствии со своей логикой (этот код взят из одного из моих проектов):

BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
PRODID:-//UserCalendar//EN
X-WR-CALNAME:Name Of Website
CALSCALE:GERGORIAN
<% @users.each do |user| %>  #change logic to fit your needs
    <% user.day_offs.each do |day_off| %>
BEGIN:VEVENT
DTSTAMP:<%=Time.now.strftime("%Y%m%dT%H%M%SZ")%>
UID:<%=day_off.id%>
SUMMARY:<%= day_off.user.name.titleize %> | <%= day_off.do_type %>
DTSTART:<%= day_off.start_date.strftime("%Y%m%d") %>
<% end_day=day_off.end_date + 1.day %>
DTEND:<%= end_day.strftime("%Y%m%d") %>
END:VEVENT
<% end %>
<% end %>
END:VCALENDAR

Тогда ссылка на фид будет

<%= link_to("Subscribe to Calendar", "webcal://www.nameofwebsite.com/calendar_feed/#{current_user.user_id}/calendar_feed.ics" ) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...