Tengo un recurso de grupo que estoy tratando de configurar con las autorizaciones adecuadas.Múltiples declaraciones before_filter para correct_user y admin
La lógica de autorización que estoy tratando de poner en práctica es la siguiente:
- Solamente los miembros del grupo debe ser capaz de ver su grupo.
- Un administrador puede ver cualquier grupo, así como realizar otras acciones.
Estoy intentando hacer esto con las siguientes afirmaciones before_filter en el controlador de grupo:
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_user funciona como he verificado que los miembros del grupo sólo pueden ver su grupo. Sin embargo, lo que quiero que suceda es que la cláusula admin: show anule esto, para que un administrador pueda ver cualquier grupo. Actualmente eso no está funcionando. Supongo que tengo algo mal aquí con mi filtro de pedidos y opciones.
¿Alguien me puede decir dónde me he equivocado?
EDITAR
Adición de mi código del método según la petición del Amar:
private
def correct_user
# User has to be a member to view
@group = Group.find(params[:id])
redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
Pruebe admin_user antes del filtro anterior correct_user o en show action make conditional para el usuario admin y otras – Amar
Thanks Amar. Intenté poner el filtro admin_user arriba correcto_user pero eso no lo solucionó. Podría poner la condición en la acción pero quiero ver si hay una manera de hacerlo con before_filter. – pejmanjohn
En una inspección posterior con la forma en que lo tengo escrito anteriormente, el filtro requiere que el usuario sea ambos y admin Y un usuario correcto para poder ver el grupo. Quiero que sea OR – pejmanjohn