Witam
Używam w swojej aplikacji plugin RESTful_authentication. Mam problem z ustaleniem odpowiednich przekierować po zalogowaniu. W pluginie są metody odpowiedzialne za przekierowania
[code]def store_location
session[:return_to] = request.request_uri
end
def redirect_back_or_default(default)
session[:return_to] ? redirect_to_url(session[:return_to]) : redirect_to(default)
session[:return_to] = nil
end[/code]
Metoda store_location jest wywoływana w metodzie access_denied która to jest wywoływana podczas próby uszycia metody dostępnej tylko dla użytkownika zalogowanego.
W kontrolerze sesji w metodzie create w sytuacji pomyślnego utworzenia sesji (zalogowania) jest takie wywołanie metody
redirect_back_or_default('/')
Gdy użytkownik nie jest zalogowany i kliknie w link do metody dostępnej tylko dla zalogowanego użytkownika np.
<%= link_to 'Edytuj', edit_article_path(article) %>
to pokazuje się strona logowania i po pomyślnym logowaniu następuje przekierowanie na
articles/1/edit
Niestety jak użytkownik kliknie na jakiejś podstronie link
<%= link_to 'Zaloguj się', login_path %>
to po pomyślnym logowaniu jest przenoszony na stronę główną ponieważ metoda store_location nie została wywołana więc session[:return_to] ma wartość nill
W poszukiwaniu rozwiązania trafiłem na RESTful Authentication Redirects. Jednak ta metoda działa w przypadku gdy formularz logowania znajduje się na stronie z treścią, a ja mam oddzielną stronę z formularzem logowania.
Wydaje mi się, że rozwiązaniem mogło by być wywołanie metody store_location w momencie gdy użytkownik klika w link znajdujący się w layoucie application.rhtml
<%= link_to 'Zaloguj się', login_path %>
jednak nie wiem jak to zrobić (jeżeli w ogóle da się to zrobić w ten sposób).