class TwitterSessionsController

OpenIrekia v4.0.0

Copyright 2009-2013 eFaber, S.L. Copyright 2009-2013 Ejie, S.A. Copyrigth 2009-2013 Dirección de Gobierno Abierto y Comunicación en Internet;

Gobernu Irekirako eta Interneteko Komunikaziorako Zuzendaritza; Lehendakaritza.
Gobierno Vasco – Eusko Jaurlaritza

Licencia con arreglo a la EUPL, Versión 1.1 o –en cuanto sean aprobadas por la Comisión Europea– versiones posteriores de la EUPL (la Licencia); Solo podrá usarse esta obra si se respeta la Licencia. Puede obtenerse una copia de la Licencia en: ec.europa.eu/idabc/eupl Salvo cuando lo exija la legislación aplicable o se acuerde por escrito, el programa distribuido con arreglo a la Licencia se distribuye TAL CUAL, SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ni expresas ni implícitas. Véase la Licencia en el idioma concreto que rige los permisos y limitaciones que establece la Licencia

http://open.irekia.net, openirekia@efaber.net

Public Instance Methods

create() click to toggle source
# File app/controllers/twitter_sessions_controller.rb, line 24
def create
  request_token = oauth.authentication_request_token(:oauth_callback => finalize_twitter_session_url)
  session['rtoken']  = request_token.token
  session['rsecret'] = request_token.secret

  session[:return_to] = params[:return_to] || request.env['HTTP_REFERER'] || root_path
  
  redirect_to request_token.authorize_url
end
finalize() click to toggle source
# File app/controllers/twitter_sessions_controller.rb, line 34
def finalize
    access_token = oauth.authorize(session['rtoken'], session['rsecret'], :oauth_verifier => params[:oauth_verifier])
    
    session['rtoken']  = nil
    session['rsecret'] = nil

    profile = oauth.info
    
    session[:return_to] = nil
    if profile.has_key?("errors")
      logger.info "Error al hacer login con Twitter: #{profile.inspect}"
      flash[:error] = "Ha sido imposible completar el login. Por favor, inténtelo más tarde"
      return_to = session[:return_to]
      session[:return_to] = nil
      redirect_to session[:return_to] || request.env['HTTP_REFERER'] || root_path and return
    end
    
    profile_attrs = {:atoken => access_token.token, 
      :asecret => access_token.secret,
      :name => profile['name'],
      :screen_name => profile['screen_name'],
      :raw_location => profile['location'], 
      :url => "http://www.twitter.com/#{profile['screen_name']}"}
            
    user = Person.find_or_initialize_by_screen_name(profile['screen_name'])
    
    if user.new_record?
      user.update_attributes(profile_attrs.merge({:status => "aprobado"}))
      self.current_user = user
      # flash[:notice] = t('session.Has_entrado', :name => current_user.name)
      redirect_back_or_default(root_path) and return
    else
      user.update_attributes(profile_attrs)
      if user.status.eql?("pendiente")
        render :template => "/sessions/waiting_for_approval" and return
      elsif user.status.eql?("vetado") || user.status.eql?("eliminado")
        flash[:notice] = "Este usuario ha sido eliminado"
        redirect_to root_path and return
      else
        self.current_user = user
        flash[:notice] = t('session.Has_entrado', :name => current_user.name)
        redirect_back_or_default(root_path) and return
      end
      session[:return_to] = nil
    end
end