Heyya guys. So i thought about this coolio idea, if you are logged in then you get some sort of dashboard, else you get an information/login/sign up page..
I have the same problem and I solved it with this:
authenticated :user do
root :to => "wathever#index"
end
unauthenticated :user do
devise_scope :user do
get "/" => "devise/sessions#new"
end
end
Hope it helps.
I too wanted this in my app, here's what I came up with.
MyCoolioApp::Application.routes.draw do
root :to => 'users#dashboard', :constraints => lambda {|r| r.env["warden"].authenticate? }
root :to => 'welcome#index'
get "/" => 'users#dashboard', :as => "user_root"
# ..
end
In Rails 3 you can use Request Based Contraints to dynamically map your root
route. The solution above works for the Devise authentication gem but can be modified to support your own implementation.
With the above root_path
or /
will route to a WelcomeController#index
action for un-authenticated requests. When a user is logged in the same root_path
will route to UsersController#dashboard
.
Hope this helps.
Think you may have been looking for this:
authenticated :user do
root :to => "dashboard#show"
end
root :to => "devise/sessions#new"
Note: it's authenticate*d*
Here's what I'm using in my application layout file right now. Haven't broken it out into partials yet:
<% if user_signed_in? %>
<a href="/profile"><%= current_user.email %></a> |
<%= link_to "Logout", destroy_user_session_path %>
<% else %>
<%= link_to "Login", new_user_session_path %> |
<%= link_to "Register", new_user_registration_path %>
<% end %>
are you using devise's before filters?
class FooController < ActionController::Base
before_filter :authenticate_user!
...
Why don't you try altering the default login views so they have the info/login/signup infos you want.