class IrekiaAuthController

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

Constants

AUTH_STATUS
AUTH_TOKEN
SALT
USER_STATUS

Public Instance Methods

authenticate() click to toggle source
# File app/controllers/irekia_auth_controller.rb, line 37
def authenticate    
  auth_data = {:status => AUTH_STATUS['not_found']}
  logger.info "data: #{params[:data]}"
  if user = User.find_by_email(@data["email"])
    logger.info "salt: #{SALT}"
    logger.info "plain: #{user.plain_password}"
    logger.info "received: #{@data["password"]}"
    logger.info "db: #{User.encrypt(user.plain_password, SALT)}"
    if User.encrypt(user.plain_password, SALT).eql?(@data["password"])
      auth_data[:user_id] = user.id
      ['role', 'name', 'lastname', 'postal_code', 'province', 'city'].each do |label|
        auth_data[label] = user.send("#{label}4api")
      end
      auth_data[:status] = AUTH_STATUS[user.status]
    end
  end
  
  @auth_response = JSON.generate(auth_data)
  render :text => @auth_response
rescue
  render :text => JSON.generate({:error => 'Invalid data'})
end
register() click to toggle source
# File app/controllers/irekia_auth_controller.rb, line 60
def register
  logger.info "data: #{params[:data]}"
  user_params = {:email => @data["email"], 
                 :password => @data["password"], 
                 :password_confirmation => @data["password"], 
                 :name => @data["name"], 
                 :last_names => @data["lastname"], 
                 :raw_location => @data["postal_code"]}
  user = Person.new(user_params)
  user.user_ip = request.remote_ip
  
  response_data = {}
  if user.save
    response_data = {:status => USER_STATUS['creado'], :id => user.id, :province => user.province4api, :city => user.city4api}
    
    email = Notifier.create_activate_person_account(user)

    begin
      logger.info("API: Mandando activacion a #{user.email}")
      Notifier.deliver(email)
    rescue Net::SMTPServerBusy, Net::SMTPSyntaxError => err_type
      logger.info("API: Error al mandar mail de activacion: " + err_type)
      flash[:error] = t('session.Error_servidor_correo')
    end
  else
    logger.info "API: registro con datos erróneos: #{user.errors.inspect}"
    if user.errors.on(:email) && user.errors.on(:email).match(I18n.t('users.ya_existe_email')) 
      response_data[:status] = USER_STATUS['ya_existe']
    else
      response_data[:status] = USER_STATUS['datos_erroneos']
    end
  end
  @registro_response = JSON.generate(response_data)
  render :text => @registro_response
rescue
  render :text => JSON.generate({:error => 'Invalid data'})  
end