Когда я пытаюсь перейти к/admin. Cancancan вызывает исключение, если пользователь не вошел в систему, и если вошел пользователь, не являющийся администратором. Я хотел бы перенаправляться на экран входа в систему - если вход в систему завершен успешно, перейдите на панель управления rails_admin.Rails_admin, cancancan для авторизации, для аутентификации. Войти в Redirect?
Смотрите ниже, мой теперешний код/конфигурации, пожалуйста, дайте мне знать, если вам нужно больше информации:
/app/models/ability.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
if user && user.admin?
can :access, :rails_admin # only allow admin users to access Rails Admin
can :dashboard
can :manage, :all
else
can :read, :all # allow everyone to read everything
end
end
end
/config/initializers/rails_admin.rb
RailsAdmin.config do |config|
### Popular gems integration
# == Devise ==
# config.authenticate_with do
# warden.authenticate! scope: :user
# end
# config.current_user_method(&:current_user)
# == Cancan ==
config.authorize_with :cancan
## == Pundit ==
# config.authorize_with :pundit
## == PaperTrail ==
# config.audit_with :paper_trail, 'User', 'PaperTrail::Version' # PaperTrail >= 3.0.0
### More at https://github.com/sferik/rails_admin/wiki/Base-configuration
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
## With an audit adapter, you can add:
# history_index
# history_show
end
config.model 'User' do
create do
field :name
field :email
field :password
field :password_confirmation
field :role
end
edit do
field :name
field :email
field :password
field :password_confirmation
field :role
end
end
end
/config/routes.rb
Rails.application.routes.draw do
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
# authenticate :admin do
# mount RailsAdmin::Engine => '/admin', as: :rails_admin
# end
root to: 'visitors#index'
devise_for :users
resources :users
devise_scope :user do
get "signup", to: "devise/registrations#new"
get "login", to: "devise/sessions#new"
get "logout", to: "devise/sessions#destroy", as: 'logout'
end
end
его ** не ** ловить в 'rails-5-api' для' rails_admin' в '/ admin' –