config.ru 991 Bytes
require 'sinatra'
require 'omniauth'
require 'json'
require_relative 'lib/omniauth/strategies/remote_user'

class MyApplication < Sinatra::Base
  STRATEGY = 'RemoteUser'
  use Rack::Session::Cookie, secret: '123'
  use OmniAuth::Strategies::RemoteUser

  get '/login' do
    redirect '/auth/%s' % STRATEGY
  end

  get '/logout' do
    session[:current_user] = nil
    redirect '/'
  end

  get '/auth/:provider/callback' do
    session[:current_user] = request.env['omniauth.auth']['uid']
    session[:current_user_email] = request.env['omniauth.auth']['info']['email']
    session[:current_user_nickname] = request.env['omniauth.auth']['info']['nickname']
    
    redirect '/'
  end

  get '/' do
    user = session[:current_user]
    if user
      info = "(%s → %s)" % [session[:current_user_email], session[:current_user_nickname]]
      user + info + ' <a href="/logout">logout</a>'
    else
      'NOT AUTHENTICATED  <a href="/login">login</a>'
    end
  end
end

run MyApplication