Каждый раз, когда я пытаюсь подключиться к своему бэк-офису с помощью администратора, я получаю это. Вы не авторизованы для доступа к этой странице. даже если все настроено так, чтобы принимать администраторов. Я проверил, и все мои сотрудники - администраторы, поэтому этого не следует делать!
Я пытался ограничить права основных пользователей, я пытался получить доступ к странице с каждой учетной записью, но всегда получаю этоошибка, даже если все сотрудники являются администраторами!
способность.rb
class Ability
include CanCan::Ability
def initialize(employee)
employee ||= Employee.new # guest employee (not logged in)
if employee.admin?
can :access, :rails_admin # only allow admin employees to access Rails Admin
can :read, :dashboard
can :manage, :all
authorize!(:dashboard, @employee)
end
end
end
employee_controller.rb
class EmployeesController < ApplicationController
def employee_params
params.require(:employee).permit(:email, :encrypted_password, :password_confirmation, :role)
end
end
available.rb
module Accessible
extend ActiveSupport::Concern
included do
before_action :check_employee
end
protected
def check_employee
if current_employee.admin
flash.clear
redirect_to(rails_admin.dashboard_path) && return
elsif current_employee
flash.clear
redirect_to(new_employee_session_path) && return
end
end
end
rails_admin.rb
RailsAdmin.config do |config|
config.parent_controller = "::ApplicationController"
config.authorize_with do |controller|
if current_employee.admin?
redirect_to main_app.new_account_session_path, flash: {error: 'Please Login to Continue..'}
elsif !current_employee.admin?
redirect_to main_app.root_path, flash: {error: 'You are not Admin'}
end
end
## == CancanCan ==
config.authorize_with :cancancan
config.actions do
dashboard # mandatory
index # mandatory
new
export
bulk_delete
show
edit
delete
show_in_app
end
end
rout.rb
Rails.application.routes.draw do
devise_for :users, path: 'users'
devise_for :employees, path: 'employee'
namespace :user do
resources :users
end
namespace :employee do
resources :employees
end
mount RailsAdmin::Engine => '/admin', as: 'rails_admin'
root 'index#Index'
get '/Index', to: 'index#Index'
get '/ResidentialServices', to: 'pages#ResidentialServices'
get '/CorporateServices', to: 'pages#CorporateServices'
get '/Quotes', to: 'pages#Quotes'
get '/Awards', to: 'pages#Awards'
end
добавить администратора к миграции сотрудников
class AddAdminToEmployees < ActiveRecord::Migration[5.2]
def change
add_column :employees, :admin, :boolean, default: false
end
end
сотрудника (вы можете видеть, что я установилмой админ в true:
Employee.create!(lastName: 'xxx', firstName: 'xxx', title: 'Comm Rep', email: 'xxx@xx.xx', encrypted_password: BCrypt::Password.create('123456'), admin: 'true')
я ожидаю, что администраторы смогут получить доступ к backoffice