Регистрация использования Devise в качестве исходного неутвержденного состояния - PullRequest
0 голосов
/ 05 марта 2012

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

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

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

1 Ответ

0 голосов
/ 19 марта 2012

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

1. оригинал 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.так мы могли бы определить свои собственные:

# 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              

НЕ проверено. :-)

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