igrigorik/vimgolf

View on GitHub
app/controllers/sessions_controller.rb

Summary

Maintainability
A
0 mins
Test Coverage
B
85%
class SessionsController < ApplicationController
  def create
    user = User.where(uid: request.env['omniauth.auth']['uid']).first

    if user.nil?
      user = User.create(user_params.merge({
        provider: request.env['omniauth.auth']['provider'],
        uid: request.env['omniauth.auth']['uid']
      }).permit!)
    else
      user.update_attributes(user_params)
    end

    session[:user] = user[:uid]
    redirect_to root_url, :notice => "Signed in"
  end

  def destroy
    session[:user] = nil
    redirect_to root_url, :notice => "Signed out"
  end

  private

  def user_params
    ActionController::Parameters.new(
      request.env['omniauth.auth']
    ).required('info').permit(
      :provider,
      :uid,
      :nickname,
      :name,
      :location,
      :image,
      :description
    )
  end
end