Tengo un usuario, que tiene varios nodos, que tiene varios subnodos
utilizo claves ajenas en la BD y has_many en los modelos.
ahora llego el momento de los permisos de forma que el usuario1,no pueda
acceder a
los nodos y subnodos del usuario2
==================================
Pues nada, el usuario se logea y cuando se pulse el botón de validar, se
ejecutará el método ‘login’ del controlador, que es donde comprobaremos
si el usuario puede seguir o no y si es valido se le asigna una variable
session:
creo la sesión con el Id del usuario
session[:user_id] = logged_in_user
y utilizo ApplicationController
para definir el metodo authorize
def authorize
unless session[:user_id]
flash[:notice] = “Please log in”
session[:jumpto] = request.parameters
redirect_to(:controller => “login”, :action => ‘login’)
end
end
y utilizo before_filter :authorize en los controladores q tiene q ser
privados.
===================================00
OK tengo la mitad de la pelicula, pero ahora es donde me atasco, en la
parte mas facil.
de alguna forma tengo q modificar el metodo authorize que
si el valor de session[:user_id] coincide con el valor del usuario de
algun nodo o subnodo, se permita la accion y si no (pq se acede
directamente por url /subnodo/21) se remita al login
CONCRETANDO:
1.- como defino los modelos para poder realizar la comparacion
session[:user_id] = usuario.nodo.subnodo.find(21)
o
session[:user_id] = usuario.nodo.find(5)
2.- y si lo complico mas y un nodo puede pertenecer a varios usuarios,
(relacion muchos a muchos)
y finalmente 3, aunque esto creo q ya sabre hacerlo solito,
como modifico el metodo autorize para que me realice la accion.