разработать с несколькими макетами - PullRequest
0 голосов
/ 02 января 2012

Мне действительно нравится аутентифицировать моего разработанного пользователя через 2 разных интерфейса, чтобы иметь 2 разных макета.

Например, я мог бы использовать / users / sign_in и / admin / sign_in на основе той же модели User.

Я установил 2 маршрута:

devise_for :users

и

devise_for :users, :module => "admin/users", :path => ''

Но я не уверен, что это правильный способ, потому что мне нужно перезаписать current_user на контроллере приложения, например так:

def current_user
    super || current_admin_user
end

Кроме того, у меня есть 2 метода: authenticate_user! и authenticate_admin_user!

Я действительно запутался в этой спецификации, кто-нибудь может помочь?

Ответы [ 3 ]

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

Лучше всего использовать STA (Single Table Inheritance)… Тогда вы можете использовать 2 devise_for объявлений, по одному для каждой модели.

0 голосов
/ 21 сентября 2012
I have a different controller admin in that i have added a login action.

 class AdminController < ApplicationController   
    def login
      @user = User.new
    end
  end

In view of login.html.erb

<%= form_for(@user, :as => :user, :url => session_path(:user)) do |f| %>
<% end %>


U can now call admin/login path

 and successfully got sign up, but if you want to redirect to some other page after sign up instead of root url then

In application controller write inside this method of devise

def after_sign_in_path_for(resource)
 end
0 голосов
/ 03 января 2012

Я не уверен, что у меня возникла ваша проблема, если нет, пожалуйста, прокомментируйте ее:)

Нет необходимости перезаписывать current_user.Вы можете создать фильтр, который фильтрует администраторов следующим образом:

def require_admin_user
  unless current_user.admin
    flash[:error] = "You need admin privileges to enter this area"
    redirect_to root_path 
  end
end

current_user будет возвращать текущего пользователя, вошедшего в систему, будь то администратор или не администратор.Если вы хотите, чтобы пользователь мог войти в систему как администратор, только если он является обычным пользователем, я бы предложил другой подход: создание другой модели для администраторов и фильтрация для require_user!для админа sign_in.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...