Показывать разные домашние страницы в зависимости от статуса входа в Rails - PullRequest
1 голос
/ 18 августа 2010

Я использую плагин restful для аутентификации для аутентификации пользователей для приложения, которое я создаю.Как и на большинстве хороших сайтов, когда пользователь заходит на домашнюю страницу, я хочу показать шаблонную страницу приветствия и иметь возможность войти или зарегистрироваться.Однако, когда пользователь вошел в систему, я хочу, чтобы корневой URL сайта (то есть sitename.com) отображал панель пользователя вместо стандартной страницы приветствия.Я предполагаю, что это просто выполняется с помощью файлов макета и проверки, если пользователь logged_in?но логика этого, кажется, ставит меня в тупик.Большое спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

Я бы сделал это так: у вас будет main контроллер, к которому могут получить доступ не вошедшие в систему пользователи, а затем второй контроллер (назовем его admin/main), который является главной страницей для зарегистрированных пользователей..

В действии index контроллера main (при условии, что вы просто хотите перенаправить действие индекса; в противном случае вы можете использовать before_filter):

class MainController < ApplicationController
  def index
    redirect_to :controller => 'admin/main', :action => 'index' and return if logged_in?
  end
end

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

0 голосов
/ 18 августа 2010

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

def new
  if logged_in?
    redirect_to :controller => 'dashboard', :action => 'index'
  end
end

Вы также можете сделать это в before_filter, чтобы избежать "загрязнения" действия входа в систему.Например,

before_filter :logged_in_users_go_to_dashboard, :only => [:create, :new]

def logged_in_users_go_to_dashboard
  redirect_to(:controller => 'dashboard', :action => 'index') if logged_in?
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...