Permalink
Fetching contributors…
Cannot retrieve contributors at this time
108 lines (93 sloc) 2.76 KB
require File.expand_path('../setup', __FILE__)
module Example
class SimpleApp < BaseApp
include Warden::GitHub::SSO
enable :inline_templates
GITHUB_CONFIG = {
client_id: ENV['GITHUB_CLIENT_ID'] || 'test_client_id',
client_secret: ENV['GITHUB_CLIENT_SECRET'] || 'test_client_secret',
scope: 'user'
}
use Warden::Manager do |config|
config.failure_app = BadAuthentication
config.default_strategies :github
config.scope_defaults :default, config: GITHUB_CONFIG
config.serialize_from_session { |key| Warden::GitHub::Verifier.load(key) }
config.serialize_into_session { |user| Warden::GitHub::Verifier.dump(user) }
end
def verify_browser_session
if env['warden'].user && !warden_github_sso_session_valid?(env['warden'].user, 10)
env['warden'].logout
end
end
get '/' do
erb :index
end
get '/profile' do
verify_browser_session
env['warden'].authenticate!
erb :profile
end
get '/login' do
verify_browser_session
env['warden'].authenticate!
redirect '/'
end
get '/logout' do
env['warden'].logout
redirect '/'
end
end
def self.app
@app ||= Rack::Builder.new do
run SimpleApp
end
end
end
__END__
@@ layout
<html>
<body>
<h1>Simple App Example</h1>
<ul>
<li><a href='/'>Home</a></li>
<li><a href='/profile'>View profile</a><% if !env['warden'].authenticated? %> (implicit sign in)<% end %></li>
<% if env['warden'].authenticated? %>
<li><a href='/logout'>Sign out</a></li>
<% else %>
<li><a href='/login'>Sign in</a> (explicit sign in)</li>
<% end %>
</ul>
<hr />
<%= yield %>
</body>
</html>
@@ index
<% if env['warden'].authenticated? %>
<h2>
<img src='<%= env['warden'].user.avatar_url %>' width='50' height='50' />
Welcome <%= env['warden'].user.name %>
</h2>
<% else %>
<h2>Welcome stranger</h2>
<% end %>
@@ profile
<h2>Profile</h2>
<dl>
<dt>Rails Org Member:</dt>
<dd><%= env['warden'].user.organization_member?('rails') %></dd>
<dt>Publicized Rails Org Member:</dt>
<dd><%= env['warden'].user.organization_public_member?('rails') %></dd>
<dt>Rails Committer Team Member:</dt>
<dd><%= env['warden'].user.team_member?(632) %></dd>
<dt>GitHub Site Admin:</dt>
<dd><%= env['warden'].user.site_admin? %></dd>
<% if env['warden'].user.using_single_sign_out? %>
<dt>GitHub Browser Session ID</dt>
<dd><%= env['warden'].user.browser_session_id %></dd>
<dt>GitHub Browser Session Valid</dt>
<dd><%= warden_github_sso_session_valid?(env['warden'].user, 10) %></dd>
<dt>GitHub Browser Session Verified At</dt>
<dd><%= Time.at(warden_github_sso_session_verified_at) %></dd>
<% end %>
</dl>