Gestión de roles en Rails
07 de marzo de 10
Hasta ahora nunca me había topado con una aplicación que necesitara la gestión de roles de una manera exhaustiva -para algo más que el típico admin.
Recopilando información me encontre con declarative_authorization y es una maravilla en pocos pasos tienes un sistema de gestión de roles de lo más sencillo.
Como todo queda lo suficiente claro en su README, solo voy a añadir como podéis hacer para personalizar el mensaje de "No autorizado", ya que el por defecto no queda demasiado integrado en layout.
Basta con añadir el siguiente método en vuestro ApplicationController:
#/app/controllers/application_controller.rb
protected
def permission_denied
flash[:error] = _("Sorry, you are not allowed to access that page.")
redirect_back_or_default root_url
end
Integrando Feedburner con tus feeds
13 de enero de 10
Feedburner es una potente aplicación para gestionar tus feeds que pasó a manos de Google hace ya algún tiempo.
Integrarla en cualquier CMS como Wordpress es de lo más sencillo, ya que hay plugins para hacerlo.
Pero si está en una aplicación Rails -como es el caso de este blog- la manera más sencilla de hacerlo es configurando tu servidor, si tienes acceso, o atacando directamente desde el controlador.
Lo que hay que hacer es redireccionar a todos los usuarios al feed de Feedburner, excepto si el que entra es este último para recoger nuestro RSS.
Como el daemon de Feedburner entra con un UserAgent especial, la manera más simple de realizar esto es la siguiente:
def feed
unless request.env['HTTP_USER_AGENT'] =~ /feedburner/i
redirect_to 'http://feeds.feedburner.com/jordivillar'
else
@posts = Post.find(:all,
:order => 'created_at DESC',
:conditions => 'published = true')
render :layout => false
end
end
Y de esta forma ya tenéis vuestro sitio listo, para que todos los lectores del feed, pasen a través de Feedburner y contabilizarlos en las estadísticas.
Facebook Connect en Rails
30 de septiembre de 09
Facebook Connect es la API que Facebook pone a la disposición de todos los desarrolladores para poder conectar la red social con cualquier aplicación, ya sea de internet o de escritorio.
Se usa principalmente para que cualquier usuario se pueda loguear en tu aplicación si que haga falta el molesto proceso de registro. Para adaptarla a una nueva aplicación que estoy creando usé un tutorial donde te explica como adaptarlo a Restful Authentication.
Una vez adaptado todo, un usuario cualquiera puede resgistrarse a la antigua o loguearse usando Facebook Connect, incluso usando las dos maneras conservando el mismo usuario.
Eso si, si ya tienes tu aplicación montada habrá usuarios sin el email_hash, un campo usado para comparar el email del usuario de tu aplicación con el de Facebook.
Pero esto no es un problema, solo hace falta pasar una tarea rake para que actualice ese campo a todos los usuarios y así puedan usar las dos maneras de login sin problemas.
namespace :user do
desc "This task will register all the not facebook registered users"
task :register_at_fb => :environment do
cont = 0
usuarios = User.find(:all,
:conditions => 'email_hash IS NULL',
:order => 'id DESC')
usuarios.each{ |u|
puts "Registering at facebook #{u.email}...."
begin
u.register_user_to_fb
puts "#{u.email_hash}"
rescue
puts "ERROR!"
end
cont += 1
puts "(#{cont} / #{usuarios.size})"
}
end
end
Código de Jorge Díaz, desarrollador de Fresqui.
Después de esto no tenéis excusa para permitir que los nuevos usuarios accedan a vuestros sitios de una manera más fácil y rápida.