Hola a todos colegas de la lista!
Tengo una aplicación donde estan registrados varios usuarios que
pertenecen
a varios perfiles de acceso. Los perfiles de acceso son:
- Administrador del Sistema
- Profesor
- Alumno
Estoy usando para la autentificación y el manejo de las sesiones de
usuario
el plugin restful authentication, y de acuerdo al perfil del usuario yo
les
muestro un menu en javascript para poder acceder a los metodos que segun
el
perfil puede o no acceder.
El problema que tengo es que si entro como alumno puedo acceder a los
catalogos del sistema y algunos controller que sólo deberÃa acceder el
perfil profesor por la URL del navegador
¿Cómo puedo hacer para que los alumnos no puedan acceder por la URL?
P.D.: Yo se que el plugin usa una variable @current_user en las sesiones
de
cada usuario que me permiter ver el perfil del usuario actual pero no sé
como hacer en los controller para que de acuerdo al perfil se pueda
ejecutar
o no algun metodo en especÃfico
Muchas Gracias y espero me den una ayudadita
yo utilizo content_for echale un vistazo a este cast
revise el content_for y de verdad no cubre los requerimientos de mi
caso. No
es lo que busco amigo.
Alguien me pueder dar una sugerencia?
2008/7/6 Aprendiz_ror Ruby on rails [email protected]:
2008/7/5 Manuel P. [email protected]:
P.D.: Yo se que el plugin usa una variable @current_user en las sesiones de
cada usuario que me permiter ver el perfil del usuario actual pero no sé
como hacer en los controller para que de acuerdo al perfil se pueda ejecutar
o no algun metodo en especÃfico
Yo en la parte servidor suelo definir esto en ApplicationController:
Macro to declare needed permissions per action.
def self.require_permission(action_name, permission)
before_filter(:only => action_name) do |controller|
controller.send(:render, :nothing => true) unless
controller.current_user.send(permission)
end
end
Se usaria por ejemplo asi:
def new
@user = User.new
end
require_permission :new, :can_create_users?
En tu caso en lugar de basado en metodos de User quiza se basaria en
el rol, pero ves la idea.
Hay algun plugin por ahi para roles tambien.
Échale un vistazo a acl_system:
http://opensvn.csie.org/ezra/rails/plugins/dev/acl_system2/
Te permite hacer cosas como ésta en los controladores:
access_control [:new, :create, :update, :edit] => ‘(admin | user |
moderator)’
Y en las vistas mostrar contenido en función del rol:
<% restrict_to “(admin | moderator)” do %>
<%= link_to “Admin & Moderator only link”, :action =>‘foo’ %>
<% end %>
Salu2,