google_auth 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in google_auth.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # GoogleAuth
2
+
3
+ ## What
4
+
5
+ GoogleAuth is a convenience wrapper around `omniauth-google-apps` that
6
+ makes a lot of assumptions, and requires less setup.
7
+
8
+ ## How
9
+
10
+ # Gemfile
11
+ gem 'google_auth'
12
+
13
+ # config/initializers/google_auth.rb
14
+ Rails.application.config.google_auth.domain = 'yourgoogleappsdomain.com'
15
+ # other options: 'user_class', 'path'. See source for details.
16
+
17
+ # Whichever controller you want behind the login-wall
18
+ include GoogleAuth::Controller
19
+
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,26 @@
1
+ class SessionsController < ApplicationController
2
+ skip_before_filter :ensure_authenticated
3
+
4
+ def new
5
+ redirect_to '/auth/g'
6
+ end
7
+
8
+ def create
9
+ if auth = request.env['omniauth.auth']
10
+ user = User.find_or_initialize_by_email(auth['info']['email'])
11
+ user.uid = auth['uid']
12
+ user.name = auth['info']['name']
13
+ user.save!
14
+
15
+ session[:user_id] = user.id
16
+ redirect_to session[:redirect] || root_url
17
+ else
18
+ render '/auth/failure'
19
+ end
20
+ end
21
+
22
+ def failure
23
+ render :inline => 'Snowman says no. <div id="snowman" style="text-align:center; font-size:4000%;">&#9731;</div>'
24
+ end
25
+ end
26
+
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ GoogleAuth::Engine.routes.draw do
2
+ match '/login', :to => 'sessions#new', :as => :login
3
+ match '/auth/g/callback', :to => 'sessions#create'
4
+ match '/auth/failure', :to => 'sessions#failure'
5
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "google_auth/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "google_auth"
7
+ s.version = GoogleAuth::VERSION
8
+ s.authors = ["Burke Libbey"]
9
+ s.email = ["burke.libbey@shopify.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Convenience wrapper of omniauth-google-apps}
12
+ s.description = %q{Convenience wrapper for omniauth-google-apps: Makes a lot of assumptions, requires less configuration.}
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
17
+ s.require_paths = ["lib"]
18
+
19
+ s.add_runtime_dependency 'omniauth-google-apps'
20
+ end
@@ -0,0 +1,28 @@
1
+ require 'google_auth/version'
2
+ require 'google_auth/engine'
3
+ require 'google_auth/controller'
4
+
5
+ module GoogleAuth
6
+
7
+ def self.domain
8
+ Rails.application.config.google_auth.domain or
9
+ raise "domain missing! Add config.google_auth.domain to an initializer."
10
+ end
11
+
12
+ def self.path
13
+ Rails.application.config.google_auth.path or
14
+ 'g'
15
+ end
16
+
17
+ def self.user_class
18
+ klass = Rails.application.config.google_auth.path
19
+ return klass if klass
20
+
21
+ begin
22
+ User
23
+ rescue
24
+ raise "User class not found! Add config.google_auth.user_class to an initializer."
25
+ end
26
+ end
27
+
28
+ end
@@ -0,0 +1,23 @@
1
+ module GoogleAuth
2
+ module Controller
3
+
4
+ def self.included(base)
5
+ base.send(:before_filter, :ensure_authenticated)
6
+ base.send(:helper_method, :current_user)
7
+ end
8
+
9
+ def current_user
10
+ @current_user ||= begin
11
+ GoogleAuth.user_class.find_by_id(session[:user_id]) if session[:user_id]
12
+ end
13
+ end
14
+
15
+ def ensure_authenticated
16
+ unless current_user
17
+ session[:redirect] = request.fullpath
18
+ redirect_to(login_path)
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'omniauth-google-apps'
2
+ require 'openid/store/filesystem'
3
+
4
+ module GoogleAuth
5
+ class Engine < ::Rails::Engine
6
+
7
+ config.google_auth = ActiveSupport::OrderedOptions.new
8
+
9
+ initializer 'google_auth' do |app|
10
+ # OpenID.fetcher.ca_file = 'vendor/ca-bundle.crt'
11
+ app.middleware.use OmniAuth::Builder do
12
+ provider :google_apps,
13
+ store: OpenID::Store::Filesystem.new('./tmp'),
14
+ name: GoogleAuth.path,
15
+ domain: GoogleAuth.domain
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module GoogleAuth
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: google_auth
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Burke Libbey
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-10 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: omniauth-google-apps
16
+ requirement: &70187256837100 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70187256837100
25
+ description: ! 'Convenience wrapper for omniauth-google-apps: Makes a lot of assumptions,
26
+ requires less configuration.'
27
+ email:
28
+ - burke.libbey@shopify.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - .gitignore
34
+ - Gemfile
35
+ - README.md
36
+ - Rakefile
37
+ - app/controllers/sessions_controller.rb
38
+ - config/routes.rb
39
+ - google_auth.gemspec
40
+ - lib/google_auth.rb
41
+ - lib/google_auth/controller.rb
42
+ - lib/google_auth/engine.rb
43
+ - lib/google_auth/version.rb
44
+ homepage: ''
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.11
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Convenience wrapper of omniauth-google-apps
68
+ test_files: []