bM2

Rails controller authentication

bM2
May 21st, 2017
678
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # Para autenticar solo en métodos particulares de los controladores, hay que definir al inicio:
  2. # before_action :authenticate_request, only: [:new, :create, :edit, :save]
  3. # En lugar o en adición a "create", "edit", etc. deberá ir el nombre del método tal cual esta definido en su controlador.
  4.  
  5. class ApplicationController < ActionController::API
  6.  #Requiere dos gemas Typhoeus y JSON
  7.   require 'json'
  8.  
  9.   # before_action :authenticate_request
  10.   # Lo de arriba es en dado caso quisieran hacerlo global, que cualquier request debiera ser autenticada
  11.   attr_reader :current_user
  12.  
  13.   private
  14.  
  15.   def  authenticate_request
  16.     if request.headers['Authorization'].present?
  17.      @token = request.headers['Authorization'].split(' ').last
  18.      @current_user = auth_api(@token)
  19.      render json: {error: 'Not Authorized'}, status: 401 unless @current_user
  20.     else
  21.       render json: {error: 'No token in headers'}
  22.     end
  23.   end
  24.  
  25.   def auth_api(token)
  26.       response = Typhoeus.get("http://pseesapiauth.herokuapp.com/check?token="+token)
  27.  
  28.       user = JSON.parse(response.body)['user']
  29.       if user
  30.         return user
  31.       else return nil
  32.       end
  33.  
  34.   end
  35.  
  36.  
  37. end
RAW Paste Data