2012-03-05 1 views
0

Я добавил в свой контроллер пользователя поле под названием isAdmin, и я хочу, чтобы он выбрал дружественное сообщение на любой странице с before_filter :authenticate_user!, если пользователь не является администратором.Регистрация использования в качестве начального несанкционированного состояния

Как переопределить фильтр before, чтобы он также проверял, является ли пользователь администратором?

Я видел пример использования cancan, но я хочу, чтобы пользователи-пользователи могли что-то делать в моем приложении, но я хочу, чтобы новые пользователи-администраторы не устанавливались как admin, а затем подтверждались другим администратором.

ответ

0

Я думаю, что, может быть, вы должны перезаписать метод пути создания файла рубин в папке приложения Rails (так что файл в папке Gem будет перезаписан):

1.the оригинального authenticate_user! Метод определяется:

# GEM_HOME/gems/cancan-2.0.x/lib/devise/controllers/helpers.rb 

1 module Devise 
2 module Controllers 
3  # Those helpers are convenience methods added to ApplicationController. 
4  module Helpers 
... #.... some code and comments 
42  def self.define_helpers(mapping) #:nodoc: 
43   mapping = mapping.name 
44 
45   class_eval <<-METHODS, __FILE__, __LINE__ + 1 
46   def authenticate_#{mapping}!(opts={}) 
47    opts[:scope] = :#{mapping} 
48    warden.authenticate!(opts) if !devise_controller? || opts.delete(:force) 
49   end 

2.so мы могли бы определить наши собственные:

# RAILS_APP/lib/devise/controllers/helpers.rb 
1 module Devise 
2 module Controllers 
3  # Those helpers are convenience methods added to ApplicationController. 
4  module Helpers 
5  def authenticate_user!(opts={}) 
6   authenticate_if_the_user_is_admin # PUT your hook here. 
7   opts[:scope] = :#{mapping} 
8   warden.authenticate!(opts) if !devise_controller? || opts.delete(:force) 
9   # other code... 
10  end 
11 end 
12 end 
13end    

НЕ испытанным. :-)

 Смежные вопросы

  • Нет связанных вопросов^_^