omniauth-multiple_providers 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.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +34 -0
- data/Rakefile +1 -0
- data/app/controllers/omniauth/multiple_providers_controller.rb +36 -0
- data/lib/generators/omniauth/multiple_providers/install/install_generator.rb +34 -0
- data/lib/generators/omniauth/multiple_providers/install/templates/create_provider_users.rb +25 -0
- data/lib/generators/omniauth/multiple_providers/install/templates/provider_user.rb +4 -0
- data/lib/omniauth/multiple_providers/models/concerns/auth_hash_containable.rb +80 -0
- data/lib/omniauth/multiple_providers/models/concerns/omniauthable.rb +95 -0
- data/lib/omniauth/multiple_providers/version.rb +5 -0
- data/lib/omniauth/multiple_providers.rb +12 -0
- data/omniauth-multiple_providers.gemspec +26 -0
- metadata +114 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: db49c67f0650ab6e188a421fd7767ddd5ab2227c
|
|
4
|
+
data.tar.gz: 130a7f8a180fe7aa7de9dedbb4a481f28fa3e473
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 1d95ba43b2704dfd43e3cb6c6734ac981eb77def0170b5c83494ab7ed116e5d6fb70317517b9558346cb23457f0e8c2f3904f524858f3bb220dcc8a3811dcb29
|
|
7
|
+
data.tar.gz: a22b5abcf209e8cc5bd3c992a408e186f7cc436c3bab3be097f24475ca3132762461b540f547b3e5f4bdd3c02f03454ec19520d753a7affc115ad91ee96ca97e
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Copyright (c) 2013 takuyan
|
|
2
|
+
|
|
3
|
+
MIT License
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Omniauth::MultipleProviders
|
|
2
|
+
|
|
3
|
+
Good parts for Omniauth and Multiple Providers.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Add this line to your application's Gemfile:
|
|
8
|
+
|
|
9
|
+
gem 'omniauth'
|
|
10
|
+
gem 'omniauth-facebook' # etc you needs
|
|
11
|
+
gem 'omniauth-twitter' # etc you needs
|
|
12
|
+
# ...
|
|
13
|
+
gem 'omniauth-multiple_providers'
|
|
14
|
+
|
|
15
|
+
And then execute:
|
|
16
|
+
|
|
17
|
+
$ bundle
|
|
18
|
+
|
|
19
|
+
Or install it yourself as:
|
|
20
|
+
|
|
21
|
+
$ gem install omniauth-multiple_providers
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
$ rails generate omniauth:multiple_providers:install
|
|
26
|
+
$ rake db:migrate # => create provider_users table
|
|
27
|
+
|
|
28
|
+
## Contributing
|
|
29
|
+
|
|
30
|
+
1. Fork it
|
|
31
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
|
32
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
|
33
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
|
34
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require "bundler/gem_tasks"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
module Omniauth
|
|
2
|
+
class MultipleProvidersController < ApplicationController
|
|
3
|
+
def new
|
|
4
|
+
if %w[twitter github google_oauth2 facebook].include?(params[:provider])
|
|
5
|
+
redirect_to "/auth/#{params[:provider]}"
|
|
6
|
+
else
|
|
7
|
+
redirect_to root_path, error: "#{params[:provider]}による認証は存在しません"
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def create
|
|
12
|
+
@user = User.find_or_create_by_oauth(env['omniauth.auth'], current_user)
|
|
13
|
+
if @user.new_record?
|
|
14
|
+
redirect_to new_user_session_path, flash: {error: "ユーザデータの保存に失敗しました:#{@user.errors.full_messages.join(', ')}"}
|
|
15
|
+
elsif @user.email.blank?
|
|
16
|
+
redirect_to prepare_path
|
|
17
|
+
else
|
|
18
|
+
sign_in(@user)
|
|
19
|
+
redirect_to root_path, notice: 'OK'
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def failure
|
|
24
|
+
redirect_to root_path, flash: {error: 'OAuth認証に失敗しました'}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def destroy
|
|
28
|
+
if up = current_user.provider_users.find_by(provider: params[:id])
|
|
29
|
+
up.destroy
|
|
30
|
+
redirect_to root_path, notice: "#{up.provider}の認証を削除しました。"
|
|
31
|
+
else
|
|
32
|
+
redirect_to root_path, notice: 'Does not exist your provider ID'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
|
|
3
|
+
module Omniauth
|
|
4
|
+
module MultipleProviders
|
|
5
|
+
module Generators
|
|
6
|
+
class InstallGenerator < ::Rails::Generators::Base
|
|
7
|
+
source_root File.expand_path("../templates", __FILE__)
|
|
8
|
+
|
|
9
|
+
def add_provider_user
|
|
10
|
+
copy_file 'provider_user.rb', 'app/models/provider_user.rb'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create_provider_user
|
|
14
|
+
# FIXME add datetime require
|
|
15
|
+
copy_file 'create_provider_users.rb', "db/migrate/#{DateTime.now.strftime('%Y%m%d%H%M%S')}_create_provider_users.rb"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def insert_to_user
|
|
19
|
+
#insert_into_file 'app/models/user.rb', ' include Omniauth::MultipleProviders::Omniauthable', after: 'class User < ActiveRecord::Base'
|
|
20
|
+
inject_into_class 'app/models/user.rb', User do
|
|
21
|
+
" include Omniauth::MultipleProviders::Omniauthable\n"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def add_multiple_providers_routes
|
|
26
|
+
route "get '/auth/:provider/callback' => 'omniauth/multiple_providers#create'"
|
|
27
|
+
route "get '/auth/failure' => 'omniauth/multiple_providers#failure'"
|
|
28
|
+
route "resources :omniauth, only: [:new, :create, :failure, :destroy], controller: 'omniauth/multiple_providers'"
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class CreateProviderUsers < ActiveRecord::Migration
|
|
2
|
+
def change
|
|
3
|
+
create_table :provider_users do |t|
|
|
4
|
+
t.integer :user_id
|
|
5
|
+
t.string :email
|
|
6
|
+
t.string :provider
|
|
7
|
+
t.string :locale
|
|
8
|
+
t.string :gender
|
|
9
|
+
t.string :uid
|
|
10
|
+
t.string :access_token
|
|
11
|
+
t.string :refresh_token
|
|
12
|
+
t.string :secret
|
|
13
|
+
t.integer :expires_at
|
|
14
|
+
t.string :nickname
|
|
15
|
+
t.string :name
|
|
16
|
+
t.string :image_path
|
|
17
|
+
|
|
18
|
+
t.timestamps
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
add_index :provider_users, :user_id
|
|
22
|
+
add_index :provider_users, :provider
|
|
23
|
+
add_index :provider_users, :uid
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'active_support/concern'
|
|
2
|
+
|
|
3
|
+
module Omniauth
|
|
4
|
+
module MultipleProviders
|
|
5
|
+
#
|
|
6
|
+
# # Usage
|
|
7
|
+
# class ProviderUser < ActiveRecord::Base
|
|
8
|
+
# include Omniauth::MultipleProviders::AuthHashContainable
|
|
9
|
+
# end
|
|
10
|
+
module AuthHashContainable
|
|
11
|
+
extend ActiveSupport::Concern
|
|
12
|
+
|
|
13
|
+
included do
|
|
14
|
+
belongs_to :user
|
|
15
|
+
validates_presence_of :user_id, :provider, :uid
|
|
16
|
+
validates_uniqueness_of :provider, scope: :user_id
|
|
17
|
+
validates_uniqueness_of :uid, scope: :provider
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# TODO use method_missing
|
|
21
|
+
def update_by(auth)
|
|
22
|
+
self.provider = auth['provider']
|
|
23
|
+
self.uid = auth['uid']
|
|
24
|
+
case auth['provider']
|
|
25
|
+
when 'twitter'
|
|
26
|
+
update_by_twitter(auth)
|
|
27
|
+
when 'facebook'
|
|
28
|
+
update_by_facebook(auth)
|
|
29
|
+
when 'github'
|
|
30
|
+
update_by_github(auth)
|
|
31
|
+
when 'google_oauth2'
|
|
32
|
+
update_by_google_oauth2(auth)
|
|
33
|
+
end
|
|
34
|
+
self.save
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# USAGE: if you want customize, you just overwrite follow methods.
|
|
38
|
+
def update_by_twitter(auth)
|
|
39
|
+
self.access_token = auth['credentials']['token']
|
|
40
|
+
self.secret = auth['credentials']['secret']
|
|
41
|
+
self.name = auth['info']['nickname']
|
|
42
|
+
self.nickname = auth['info']['nickname']
|
|
43
|
+
self.image_path = auth['info']['image']
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def update_by_facebook(auth)
|
|
47
|
+
self.access_token = auth['credentials']['token']
|
|
48
|
+
self.expires_at = auth['credentials']['expires_at']
|
|
49
|
+
self.email = auth['info']['email']
|
|
50
|
+
self.name = auth['info']['name']
|
|
51
|
+
self.nickname = auth['info']['nickname']
|
|
52
|
+
self.image_path = auth['info']['image']
|
|
53
|
+
self.gender = auth['extra']['raw_info']['gender']
|
|
54
|
+
self.locale = auth['extra']['raw_info']['locale']
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def update_by_github(auth)
|
|
58
|
+
self.email = auth['info']['email']
|
|
59
|
+
self.name = auth['info']['name']
|
|
60
|
+
self.nickname = auth['info']['nickname']
|
|
61
|
+
self.image_path = auth['info']['image']
|
|
62
|
+
self.access_token = auth['credentials']['token']
|
|
63
|
+
self.secret = auth['credentials']['secret']
|
|
64
|
+
self.refresh_token = auth['credentials']['refresh_token']
|
|
65
|
+
self.expires_at = auth['credentials']['expires_at']
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def update_by_google_oauth2(auth)
|
|
69
|
+
self.email = auth['info']['email']
|
|
70
|
+
self.name = auth['info']['name']
|
|
71
|
+
self.access_token = auth['credentials']['token']
|
|
72
|
+
self.refresh_token = auth['credentials']['refresh_token']
|
|
73
|
+
self.expires_at = auth['credentials']['expires_at']
|
|
74
|
+
self.image_path = auth['info']['image']
|
|
75
|
+
self.gender = auth['extra']['raw_info']['gender']
|
|
76
|
+
self.locale = auth['extra']['raw_info']['locale']
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'active_support/concern'
|
|
2
|
+
|
|
3
|
+
module Omniauth
|
|
4
|
+
module MultipleProviders
|
|
5
|
+
module Omniauthable
|
|
6
|
+
extend ActiveSupport::Concern
|
|
7
|
+
|
|
8
|
+
included do
|
|
9
|
+
has_many :provider_users, dependent: :destroy
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def create_or_update_provider_user_by(auth)
|
|
13
|
+
if provider_user = self.provider_users.find_by(uid: auth['uid'], provider: auth['provider'])
|
|
14
|
+
provider_user.update_by(auth)
|
|
15
|
+
else
|
|
16
|
+
provider_user = self.provider_users.build
|
|
17
|
+
provider_user.update_by(auth)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def oauthed?(provider_name)
|
|
22
|
+
if up = self.provider_users.find_by(provider: provider_name)
|
|
23
|
+
up
|
|
24
|
+
else
|
|
25
|
+
nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
module ClassMethods
|
|
30
|
+
def find_or_create_by_oauth(auth, current_user)
|
|
31
|
+
@user = if current_user
|
|
32
|
+
current_user.create_or_update_provider_user_by(auth)
|
|
33
|
+
current_user
|
|
34
|
+
else
|
|
35
|
+
if user = User.find_by_oauth(auth)
|
|
36
|
+
user.create_or_update_provider_user_by(auth)
|
|
37
|
+
user
|
|
38
|
+
else
|
|
39
|
+
user = User.create_by_oauth(auth)
|
|
40
|
+
user.save
|
|
41
|
+
user.create_or_update_provider_user_by(auth)
|
|
42
|
+
user
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def find_by_oauth(auth)
|
|
48
|
+
if up = ProviderUser.find_by(uid: auth['uid'], provider: auth['provider'])
|
|
49
|
+
up.user
|
|
50
|
+
else
|
|
51
|
+
nil
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def create_by_oauth(auth)
|
|
56
|
+
logger.debug "##### Auth Hash: #{auth.to_json}"
|
|
57
|
+
case auth['provider']
|
|
58
|
+
when 'twitter'
|
|
59
|
+
# Twitter not give me email from api
|
|
60
|
+
User.create_by_twitter(auth)
|
|
61
|
+
when 'facebook', 'google_oauth2', 'github'
|
|
62
|
+
# Other api give me email
|
|
63
|
+
User.create_by_omniauth(auth)
|
|
64
|
+
else
|
|
65
|
+
User.new
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def create_by_omniauth(auth)
|
|
70
|
+
u = User.new
|
|
71
|
+
u.email = auth['info']['email']
|
|
72
|
+
u.name = auth['info']['name']
|
|
73
|
+
password = Devise.friendly_token[0,20]
|
|
74
|
+
u.password = password
|
|
75
|
+
u.password_confirmation = password
|
|
76
|
+
u.skip_confirmation! # Because we get confirmed (by providers) email !
|
|
77
|
+
u.save
|
|
78
|
+
u
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def create_by_twitter(auth)
|
|
82
|
+
# https://github.com/arunagw/omniauth-twitter#authentication-hash
|
|
83
|
+
u = User.new
|
|
84
|
+
# u.email = auth['info']['email'] # Twitter not give me email from api
|
|
85
|
+
u.name = auth['info']['name']
|
|
86
|
+
password = Devise.friendly_token[0,20]
|
|
87
|
+
u.password = password
|
|
88
|
+
u.password_confirmation = password
|
|
89
|
+
u.save
|
|
90
|
+
u
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require "omniauth/multiple_providers/version"
|
|
2
|
+
require "omniauth/multiple_providers/models/concerns/omniauthable"
|
|
3
|
+
require "omniauth/multiple_providers/models/concerns/auth_hash_containable"
|
|
4
|
+
require 'rails/engine'
|
|
5
|
+
|
|
6
|
+
module Omniauth
|
|
7
|
+
module MultipleProviders
|
|
8
|
+
class Engine < ::Rails::Engine
|
|
9
|
+
isolate_namespace Omniauth::MultipleProviders
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# coding: utf-8
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'omniauth/multiple_providers/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |spec|
|
|
7
|
+
spec.name = "omniauth-multiple_providers"
|
|
8
|
+
spec.version = Omniauth::MultipleProviders::VERSION
|
|
9
|
+
spec.authors = ["Takuya Kato"]
|
|
10
|
+
spec.email = ["info@takuya.com"]
|
|
11
|
+
spec.description = %q{Support omniauth for multiple provider}
|
|
12
|
+
spec.summary = %q{Support omniauth for multiple provider}
|
|
13
|
+
spec.homepage = ""
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files`.split($/)
|
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
|
22
|
+
spec.add_development_dependency "rake"
|
|
23
|
+
|
|
24
|
+
spec.add_dependency 'omniauth'
|
|
25
|
+
spec.add_dependency 'activesupport'
|
|
26
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: omniauth-multiple_providers
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Takuya Kato
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-01-21 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: omniauth
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ">="
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: activesupport
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :runtime
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
description: Support omniauth for multiple provider
|
|
70
|
+
email:
|
|
71
|
+
- info@takuya.com
|
|
72
|
+
executables: []
|
|
73
|
+
extensions: []
|
|
74
|
+
extra_rdoc_files: []
|
|
75
|
+
files:
|
|
76
|
+
- ".gitignore"
|
|
77
|
+
- Gemfile
|
|
78
|
+
- LICENSE.txt
|
|
79
|
+
- README.md
|
|
80
|
+
- Rakefile
|
|
81
|
+
- app/controllers/omniauth/multiple_providers_controller.rb
|
|
82
|
+
- lib/generators/omniauth/multiple_providers/install/install_generator.rb
|
|
83
|
+
- lib/generators/omniauth/multiple_providers/install/templates/create_provider_users.rb
|
|
84
|
+
- lib/generators/omniauth/multiple_providers/install/templates/provider_user.rb
|
|
85
|
+
- lib/omniauth/multiple_providers.rb
|
|
86
|
+
- lib/omniauth/multiple_providers/models/concerns/auth_hash_containable.rb
|
|
87
|
+
- lib/omniauth/multiple_providers/models/concerns/omniauthable.rb
|
|
88
|
+
- lib/omniauth/multiple_providers/version.rb
|
|
89
|
+
- omniauth-multiple_providers.gemspec
|
|
90
|
+
homepage: ''
|
|
91
|
+
licenses:
|
|
92
|
+
- MIT
|
|
93
|
+
metadata: {}
|
|
94
|
+
post_install_message:
|
|
95
|
+
rdoc_options: []
|
|
96
|
+
require_paths:
|
|
97
|
+
- lib
|
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0'
|
|
103
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
|
+
requirements:
|
|
105
|
+
- - ">="
|
|
106
|
+
- !ruby/object:Gem::Version
|
|
107
|
+
version: '0'
|
|
108
|
+
requirements: []
|
|
109
|
+
rubyforge_project:
|
|
110
|
+
rubygems_version: 2.2.0
|
|
111
|
+
signing_key:
|
|
112
|
+
specification_version: 4
|
|
113
|
+
summary: Support omniauth for multiple provider
|
|
114
|
+
test_files: []
|