Devise + Omniauth / Передача частичной информации в Omniauth Controller для перенаправления - PullRequest
0 голосов
/ 07 января 2012

В настройках My Devise + Omniauth в настоящее время используется следующий путь для входа пользователя в систему с помощью Facebook:

user_omniauth_authorize_path(:facebook)

У меня есть часть, отображающая список элементов, каждый элемент имеет ссылку, которая:

1) регистрирует пользователя по указанному выше пути, если он не вошел в систему

2) ссылки на страницу показа элемента, если они вошли в систему

Если не вошли в систему, я 'Я хотел бы изменить # 1, чтобы перенаправить страницу показа элемента конкретного элемента, на который был нажат после входа в систему.

Для этого потребуется каким-то образом передать идентификатор элемента в контроллер Omniauth.

Есть предложения?

1 Ответ

0 голосов
/ 07 января 2012

Нет, это делается более простым способом.

В вашем контроллере предметов установите before_filter

class ItemController < ApplicationController
  before_filter :authenticate_user!
end

Затем визуализируйте все ваши ссылки как ссылки на элементы, что-то вроде этого:

<%= link_to 'item', item_path(@item) %>

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

Этот подход также гарантирует, что ваши элементы не могут быть просмотрены, пока пользователь не вошел в систему (даже если он, скажем, скопировал ссылку на элемент и отправил ее другу, у которого нет учетной записи на вашем сайте).

...