Я только начал разрабатывать с Ruby on Rails и ищу плагин динамической авторизации, который позволяет администратору связывать разрешения для ролей и ролей с пользователями.
Я нашел кое-что здесь в stackoverflow и внекоторые форумы, а также некоторые подкасты на railscasts.org, нацеленные на эту тему, но все они ссылаются на acl9, декларативное_авторизация, Aegis, restful acl или даже Authlogic, который является не авторизацией, а плагином аутентификации.Другие не предлагают необходимую функциональность.
Так может кто-нибудь сказать мне, возможно ли настроить веб-интерфейс с использованием ruby на рельсах для администрирования пользовательских ролей?
Итак, пока яперенесли мою базу данных с помощью следующей миграции.
class AddRolesAndRightsTables < ActiveRecord::Migration
def self.up
create_table :roles_users do |t|
t.integer :role_id
t.integer :user_id
end
create_table :roles do |t|
t.string :name
end
create_table :rights_roles do |t|
t.integer :right_id
t.integer :role_id
end
create_table :rights do |t|
t.string :name
t.string :controller
t.string :action
end
end
def self.down
drop_table :roles_users
drop_table :roles
drop_table :rights_roles
drop_table :rights
end
end
И в дополнение к некоторым представлениям и действиям контроллера я добавил следующее действие в ApplicationController.
def check_authorization
user = User.find(session[:user])
unless user.roles.detect do |role|
role.rights.select do |right|
right.action == action_name && right.controller == self.class.controller_path
end
end
redirect_back_or user
flash[:notice] = "You are not authorized to view the page you requested."
return false
end
Запуск Right.synchronize_with_controllers (см. блог-пост от Wolfman-Blog ), я получаю следующую ошибку.
syntax error, unexpected $end, expecting kEND (line 17 in application_controller)