class OmniauthCallbacksController

Public Instance Methods

facebook() click to toggle source
# File lib/generators/login/facebook/templates/controller.rb, line 5
def facebook
  logar("Facebook")
end

Private Instance Methods

logar(type) click to toggle source
# File lib/generators/login/facebook/templates/controller.rb, line 10
def logar(type)
  @user = Usuario.from_omniauth(request.env["omniauth.auth"])
  if @user # verifica usuário existente.
    set_flash_message(:notice, :success, :kind => type) if is_navigational_format?
    sign_in_and_redirect(@user, :event => :authentication) #this will throw if @user is not activated
  else # usuário não existe, então verifica se foi pedido de cadastro
    if request.env["omniauth.auth"].info.email.blank?
      flash[:error] = "Você precisa permitir acesso ao e-mail para cadastrar."
      return redirect_to_origin
    end

    usuario = Usuario.create_from_social(request.env['omniauth.auth'])
    if usuario.save
      flash[:success] = "Sua conta foi criada com seus dados do #{type}"
      sign_in_and_redirect usuario, :event => :authentication #this will throw if @user is not activated
    else
      flash[:error] = "Não foi possível criar sua conta: #{usuario.errors.full_messages.to_sentence}."
      redirect_to_origin
    end
  end
end
redirect_to_origin() click to toggle source
# File lib/generators/login/facebook/templates/controller.rb, line 32
def redirect_to_origin
  return redirect_to(request.env['omniauth.origin'] || root_url)
end