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

24

tagueado en código

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.

1

tagueado en código

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.

34

tagueado en código