Acceso a paginas segun usuario

Buenas. Les cuento mi problema y a ver si me podrian dar alguna pista.
Estoy realizando una aplicacion sobre hoja de actividades y gastos. La
cosas es que un usuario no pueda acceder a la hoja de actividades de
otro.Es decir, si soy el usuario cuyo id es 2, no pueda acceder a la
pagina cuyo dirreccion es …/users/5/view_spendings asociada al usuario
cuyo id es 5. Gracias por vuestra ayuda.

Buenas,

La solución más práctica y cómoda a mi entender es tener un
before_filter en el controlador que desees (o en el
application_controller si es para toda la aplicación), que compruebe
que el params[:user_id] coincide con el user_id de la sessión, y en
caso negativo redireccione a / o de un 403 o lo que estimes oportuno.

tipo

class SpendingsController < ApplicationController
before_filter :check_user_permissions

private
def check_user_permissions
redirect_to “/” and return false unless session[:user_id] ==
params[:user_id]
end
end

Salutaciones,

Isaac Feliu

2008/8/25 Jose antonio Parra [email protected]:

Buenas. Les cuento mi problema y a ver si me podrian dar alguna pista.
Estoy realizando una aplicacion sobre hoja de actividades y gastos. La
cosas es que un usuario no pueda acceder a la hoja de actividades de
otro.Es decir, si soy el usuario cuyo id es 2, no pueda acceder a la
pagina cuyo dirreccion es …/users/5/view_spendings asociada al usuario
cuyo id es 5. Gracias por vuestra ayuda.

Una solucion es publicar un recurso unico

/spendings

Puedes hacer que el controlador de usuarios lo sirva, pero ese parte
de @current_user.spendings a piñon.

– fxn

Hola,

cosas es que un usuario no pueda acceder a la hoja de actividades de
otro.Es decir, si soy el usuario cuyo id es 2, no pueda acceder a la
pagina cuyo dirreccion es …/users/5/view_spendings asociada al usuario

entiendo que “si soy el usuario cuyo id es 2” quiere decir “si he hecho
login con el usuario cuyo id es 2”

entonces, entiendo que tienes un login. Lo suyo es que te crees un
filtro en el application controller. Tip: si usas acts_as_authenticated
o familia, tienes un filtro que se llama login_requires que puedes usar
directamente.

ahora, en el controller de users, le dices que la acción view_spendings
use el filtro de login. Ningún usuario no logado podrá ver esa acción, y
en la acción como entiendo que usas el id del usuario logado, solamente
él podrá ver la página.

Si en lugar de usar el id del usuario logado usas el id que te llega por
parámetros, lo que tienes que hacer es comprobar que el id que te pasan
es el mismo que el del usuario logado (o que es un usuario admin, o el
control de acceso que decidas)

saludos,


javier ramírez

…i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
…you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez

Muchas gracias por vuestra ayuda. La solución que he tomado ha sido
comprobar que el id del usuario pasado por parametro sea el mismo que el
id del usuario logado (o un usuario admin).