Acl_system

Hi all,
I’m using Ezra’s acl_system plugin for authorization over the
acts_as_authenticated plugin(for authentication). I really haven’t
figured out how to use acl_system. My requirement is simple - I have 3
roles - admin, buyer and store. I am not able to figure out to assign
roles to users.
May I add that I did follow all instuctions on the project homepage -
created a “Role” model and the habtm join table etc.
I’m new to rails and sure this is due to my lack of understanding of the
code.
Any help will be really appreciated.
Regards,
Sandman

Hola, he estado mirando mas esto de los plugins y no estoy seguro de si
lo
estoy instalando bien:

lo que hago es esto dentro de mi App:
script/plugin install
http://opensvn.csie.org/ezra/rails/plugins/dev/acl_system2/

y esto me genera una carpeta dentro de VENDOR/PLUGINS con el nombre del
plugin. ¿Hay que hacer algo mas para ponerlo a foncionar?

He seguido los pasos en este tuto del autor:

[1] Ruby on Rails Blog / What is Ruby on Rails for?
y me da como resultado este error:

undefined method access_control' for PostsController:Class El metodo access_control’ es uno de los metodos que incluye el plugin,
esto me hace pensar que no lo he “activado” o algo asi

¿Hay que hacer algo con el archivo “init.rb”?

despues de descargar el plugin [1] hay que poner algo por linea de
comandos
(script/generate…)?

No sé, llevo un buen rato y no veo por donde van los tiros

gracias por vuestra ayuda

On 11/6/07, Andrés gutiérrez [email protected] wrote:

Hola, he estado mirando mas esto de los plugins y no estoy seguro de si lo
estoy instalando bien:

No conozco el plugin, pero reiniciaste el servidor luego de instalar el
plugin?

No, lo voy a hacer

Gracias

El día 6/11/07, Damian J. [email protected] escribió:

vale, por hoy vale, pero lo de reiniciar el server ha funcionado, mañana
seguire experimentando a partir de aqui.

Gracias Damian. Esta tarde me has ayudado mucho, y eso que no conoces el
plugin, si lo llegas a conocer…
Un saludo

El día 6/11/07, Andrés gutiérrez [email protected] escribió:

Estos son mis apuntes, espero que te sirvan:

==========================================================
Plugin acl_system2
Instalación
ruby script/plugin install
http://opensvn.csie.org/ezra/rails/plugins/dev/acl_system2

Requisitos de funcionamiento

*
  El plugin necesita que exista un método current_user que

devuelva el usuario actualmente conectado. Esto se cumple si
utilizamos restful_authentication.

*
  El modelo User debe incluir:

has_and_belongs_to_many :roles

*
  El modelo Role debe tener un atributo title:

ruby script/generate model role

class Role < ActiveRecord::Base
has_and_belongs_to_many :users
end

class CreateRoles < ActiveRecord::Migration
def self.up
create_table :roles, :force => true do |t|
t.column :title, :string
end
end
def self.down
drop_table :roles
end
end

Y claro, no hay que olvidarse de la table roles_users:

class CreateRolesUsers < ActiveRecord::Migration
def self.up
create_table :roles_users, :id => false, :force => true do |t|
t.column :role_id, :integer
t.column :user_id, :integer
end
end
def self.down
drop_table :roles
end
end

Carga inicial de roles

class LoadRoles < ActiveRecord::Migration
def self.up
down
roles = %w{admin}
roles.each do |role_title|
role = Role.create(:title => role_title)
role.save!
end
end
def self.down
Role.delete(:all)
end
end

Asignación manual del role admin

$ ruby script/console
Loading development environment.

user = User.find(1)
role = Role.find(1)
user.roles << role

Control de acceso en el controller

access_control [:index] => ‘admin’

Control en la vista

<% restrict_to ‘admin’ do %>
<%= link_to ‘foo’, :action =>‘foo’ %>
<% end %>

En applicaction.rb (o en los controladores que se quiera) hay que tener:

include AuthenticatedSystem

==========================================================

Vale, mas o menos me funciona. He usado el ejemplo del Blog que el autor
recomienda. Esto es lo que he puesto
en Posts_controller.rb:

before_filter :login_required, :except => [:list, :index]

access_control :new => ‘(admin | moderator)’,
:create => ‘(admin | moderator)’,
:edit => ‘(admin | moderator)’,
:update => ‘(admin | moderator)’,
:destroy => ‘admin & !moderator’

Lo único que queda por determinar en esta lista de privilegios es “show”
que
se consigue cuando estas registrado mediante [Acts as Authenticated] en
mi caso. Hasta aquí todo claro.

Lo que me falla es en las vistas cuando pongo esto:

<% restrict_to ‘admin’ do %>
<%= link_to ‘foo’, :action =>‘foo’ %>
<% end %>

Me falla cuando no estoy registrado y me dice esto:

undefined method `roles’ for :false:Symbol

Es porque no tengo un current_user asignado, pero este error me da
cuando
pulso en un link que me lleva a la sección del blog dentro de mi
App. Esto sin poner esto en la vista list.rhml no me pasa y cualquiera
puede
ver los posts publicados. ¿No debería fallar cuando se pulsa sobre el
link
en cuestion?
Bueno, no se si me he explicado…

Una segunda duda que tengo es como hago para que en los menus me
aparezcan
determinados links (p.e. “editar privilegios de usuarios”)
Si el usuario que esta registrado Tiene el role de admin, sino esta
opcion
no se muestra. ¿alguna idea?