acts_as_connectable 0.0.2
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 +4 -0
- data/Gemfile +4 -0
- data/Rakefile +2 -0
- data/acts_as_connectable.gemspec +24 -0
- data/app/controllers/authentications_controller.rb +43 -0
- data/app/helpers/layout_helper.erb +18 -0
- data/app/models/authentication.rb +16 -0
- data/app/views/authentications/index.html.erb +31 -0
- data/config/initializers/omniauth.rb +87 -0
- data/config/providers.yml +26 -0
- data/db/migrate/create_authentications.rb +20 -0
- data/lib/acts_as_connectable.rb +23 -0
- data/lib/acts_as_connectable/version.rb +3 -0
- data/lib/application_controller.rb +26 -0
- data/lib/application_helper.rb +7 -0
- data/lib/engine.rb +10 -0
- data/lib/generators/acts_as_connectable/acts_as_connectable_generator.rb +9 -0
- data/lib/generators/acts_as_connectable/install_generator.rb +48 -0
- data/public/images/acts_as_connectable/aol_128.png +0 -0
- data/public/images/acts_as_connectable/aol_256.png +0 -0
- data/public/images/acts_as_connectable/aol_32.png +0 -0
- data/public/images/acts_as_connectable/aol_64.png +0 -0
- data/public/images/acts_as_connectable/basecamp_128.png +0 -0
- data/public/images/acts_as_connectable/basecamp_256.png +0 -0
- data/public/images/acts_as_connectable/basecamp_32.png +0 -0
- data/public/images/acts_as_connectable/basecamp_64.png +0 -0
- data/public/images/acts_as_connectable/campfire_128.png +0 -0
- data/public/images/acts_as_connectable/campfire_256.png +0 -0
- data/public/images/acts_as_connectable/campfire_32.png +0 -0
- data/public/images/acts_as_connectable/campfire_64.png +0 -0
- data/public/images/acts_as_connectable/facebook_128.png +0 -0
- data/public/images/acts_as_connectable/facebook_256.png +0 -0
- data/public/images/acts_as_connectable/facebook_32.png +0 -0
- data/public/images/acts_as_connectable/facebook_64.png +0 -0
- data/public/images/acts_as_connectable/github_128.png +0 -0
- data/public/images/acts_as_connectable/github_256.png +0 -0
- data/public/images/acts_as_connectable/github_32.png +0 -0
- data/public/images/acts_as_connectable/github_64.png +0 -0
- data/public/images/acts_as_connectable/google_128.png +0 -0
- data/public/images/acts_as_connectable/google_256.png +0 -0
- data/public/images/acts_as_connectable/google_32.png +0 -0
- data/public/images/acts_as_connectable/google_64.png +0 -0
- data/public/images/acts_as_connectable/linkedin_128.png +0 -0
- data/public/images/acts_as_connectable/linkedin_256.png +0 -0
- data/public/images/acts_as_connectable/linkedin_32.png +0 -0
- data/public/images/acts_as_connectable/linkedin_64.png +0 -0
- data/public/images/acts_as_connectable/myspace_128.png +0 -0
- data/public/images/acts_as_connectable/myspace_256.png +0 -0
- data/public/images/acts_as_connectable/myspace_32.png +0 -0
- data/public/images/acts_as_connectable/myspace_64.png +0 -0
- data/public/images/acts_as_connectable/openid_128.png +0 -0
- data/public/images/acts_as_connectable/openid_256.png +0 -0
- data/public/images/acts_as_connectable/openid_32.png +0 -0
- data/public/images/acts_as_connectable/openid_64.png +0 -0
- data/public/images/acts_as_connectable/presently_128.png +0 -0
- data/public/images/acts_as_connectable/presently_256.png +0 -0
- data/public/images/acts_as_connectable/presently_32.png +0 -0
- data/public/images/acts_as_connectable/presently_64.png +0 -0
- data/public/images/acts_as_connectable/rails.png +0 -0
- data/public/images/acts_as_connectable/twitter_128.png +0 -0
- data/public/images/acts_as_connectable/twitter_256.png +0 -0
- data/public/images/acts_as_connectable/twitter_32.png +0 -0
- data/public/images/acts_as_connectable/twitter_64.png +0 -0
- data/public/images/acts_as_connectable/yahoo_128.png +0 -0
- data/public/images/acts_as_connectable/yahoo_256.png +0 -0
- data/public/images/acts_as_connectable/yahoo_32.png +0 -0
- data/public/images/acts_as_connectable/yahoo_64.png +0 -0
- metadata +160 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "acts_as_connectable/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "acts_as_connectable"
|
7
|
+
s.version = ActsAsConnectable::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Cody Swann"]
|
10
|
+
s.email = ["cody@gunnertech.com"]
|
11
|
+
s.homepage = "http://gunnertech.com"
|
12
|
+
s.summary = %q{A gem for wiring models, polymorphically, to social accounts using omniAuth and devise}
|
13
|
+
s.description = %q{Aids in configuring OmniAuth and desvise}
|
14
|
+
|
15
|
+
s.rubyforge_project = "acts_as_connectable"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency('omniauth', '>= 0.1.6')
|
23
|
+
s.add_dependency('devise', '>= 1.1.5')
|
24
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
class AuthenticationsController < ApplicationController
|
2
|
+
|
3
|
+
unloadable
|
4
|
+
|
5
|
+
def index
|
6
|
+
@authentications = current_user.authentications if current_user
|
7
|
+
end
|
8
|
+
|
9
|
+
def create
|
10
|
+
omniauth = request.env["omniauth.auth"]
|
11
|
+
if omniauth
|
12
|
+
uid = (omniauth['uid']||omniauth['extra']['access_token'].params['member_id'])
|
13
|
+
authentication = Authentication.find_by_provider_and_authenticationable_type_and_uid(omniauth['provider'], uid)
|
14
|
+
if authentication
|
15
|
+
flash[:notice] = "Signed in successfully."
|
16
|
+
sign_in_and_redirect(:user, authentication.user)
|
17
|
+
elsif current_user
|
18
|
+
current_user.authentications.create!(:provider => omniauth['provider'], :uid => uid, :token => omniauth['credentials']['token'], :secret => omniauth['credentials']['secret'])
|
19
|
+
flash[:notice] = "Authentication successful."
|
20
|
+
redirect_to authentications_url
|
21
|
+
else
|
22
|
+
user = User.new
|
23
|
+
user.apply_omniauth(omniauth)
|
24
|
+
if user.save
|
25
|
+
flash[:notice] = "Signed in successfully."
|
26
|
+
sign_in_and_redirect(:user, user)
|
27
|
+
else
|
28
|
+
session[:omniauth] = omniauth.except('extra')
|
29
|
+
redirect_to new_user_registration_url
|
30
|
+
end
|
31
|
+
end
|
32
|
+
else
|
33
|
+
redirect_to root_url
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def destroy
|
38
|
+
@authentication = current_user.authentications.find(params[:id])
|
39
|
+
@authentication.destroy
|
40
|
+
flash[:notice] = "Successfully destroyed authentication."
|
41
|
+
redirect_to authentications_url
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module LayoutHelper
|
2
|
+
def title(page_title, show_title = true)
|
3
|
+
content_for(:title) { page_title.to_s }
|
4
|
+
@show_title = show_title
|
5
|
+
end
|
6
|
+
|
7
|
+
def show_title?
|
8
|
+
@show_title
|
9
|
+
end
|
10
|
+
|
11
|
+
def stylesheet(*args)
|
12
|
+
content_for(:head) { stylesheet_link_tag(*args) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def javascript(*args)
|
16
|
+
content_for(:head) { javascript_include_tag(*args) }
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Authentication < ActiveRecord::Base
|
2
|
+
PROVIDER_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/providers.yml")[::Rails.env]
|
3
|
+
|
4
|
+
belongs_to :user
|
5
|
+
|
6
|
+
validates :provider, :presence => true, :length => 1..64
|
7
|
+
validates :uid, :presence => true, :length => 1..128
|
8
|
+
validates :token, :length => 0..128, :allow_blank => true
|
9
|
+
validates :secret, :length => 0..128, :allow_blank => true
|
10
|
+
|
11
|
+
for p in PROVIDER_CONFIG['providers']
|
12
|
+
scope p['name'].to_sym, where(:provider => p['name'])
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_accessible :user_id, :provider, :uid, :token, :secret
|
16
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
|
2
|
+
<% title "Sign In" %>
|
3
|
+
<% if @authentications %>
|
4
|
+
<% unless @authentications.empty? %>
|
5
|
+
<p><strong>You can sign in to this account using:</strong></p>
|
6
|
+
<div class="authentications">
|
7
|
+
<% for authentication in @authentications %>
|
8
|
+
<div class="authentication">
|
9
|
+
<%= image_tag "acts_as_connectable/#{authentication.provider}_32.png", :size => "32x32" %>
|
10
|
+
<div class="provider"><%= authentication.provider.titleize %></div>
|
11
|
+
<div class="uid"><%= authentication.uid %></div>
|
12
|
+
<%= link_to "X", authentication, :confirm => 'Are you sure you want to remove this authentication option?', :method => :delete, :class => "remove" %>
|
13
|
+
</div>
|
14
|
+
<% end %>
|
15
|
+
<div class="clear"></div>
|
16
|
+
</div>
|
17
|
+
<% end %>
|
18
|
+
<p><strong>Add another service to sign in with:</strong></p>
|
19
|
+
<% else %>
|
20
|
+
<p><strong>Sign in through one of these services:</strong></p>
|
21
|
+
<% end %>
|
22
|
+
|
23
|
+
<a href="/auth/twitter" class="auth_provider">
|
24
|
+
<%= image_tag "acts_as_connectable/twitter_64.png", :size => "64x64", :alt => "Twitter" %>Twitter</a>
|
25
|
+
<a href="/auth/facebook" class="auth_provider">
|
26
|
+
<%= image_tag "acts_as_connectable/facebook_64.png", :size => "64x64", :alt => "Facebook" %>Facebook</a>
|
27
|
+
<a href="/auth/google_apps" class="auth_provider">
|
28
|
+
<%= image_tag "acts_as_connectable/google_64.png", :size => "64x64", :alt => "Google" %>Google</a>
|
29
|
+
<a href="/auth/open_id" class="auth_provider">
|
30
|
+
<%= image_tag "acts_as_connectable/openid_64.png", :size => "64x64", :alt => "OpenID" %>OpenID</a>
|
31
|
+
<div class="clear"></div>
|
@@ -0,0 +1,87 @@
|
|
1
|
+
module OmniAuth
|
2
|
+
module Strategies
|
3
|
+
#
|
4
|
+
# Authenticate to Flickr
|
5
|
+
#
|
6
|
+
# @example Basic Usage
|
7
|
+
#
|
8
|
+
# use OmniAuth::Strategies::Flickr, 'API Key', 'Secret Key', :scope => 'read'
|
9
|
+
class Flickr
|
10
|
+
include OmniAuth::Strategy
|
11
|
+
attr_accessor :api_key, :secret_key, :options
|
12
|
+
|
13
|
+
# error catching, based on OAuth2 callback
|
14
|
+
class CallbackError < StandardError
|
15
|
+
attr_accessor :error, :error_reason
|
16
|
+
def initialize(error, error_reason)
|
17
|
+
self.error = error
|
18
|
+
self.error_reason = error_reason
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# @param [Rack Application] app standard middleware application parameter
|
23
|
+
# @param [String] api_key the application id as [registered on Flickr](http://www.flickr.com/services/apps/)
|
24
|
+
# @param [String] secret_key the application secret as [registered on Flickr](http://www.flickr.com/services/apps/)
|
25
|
+
# @option options ['read','write','delete] :scope ('read') the scope of your authorization request; must be `read` or 'write' or 'delete'
|
26
|
+
def initialize(app, api_key, secret_key, options = {})
|
27
|
+
super(app, :flickr)
|
28
|
+
@api_key = api_key
|
29
|
+
@secret_key = secret_key
|
30
|
+
@options = {:scope => 'read'}.merge(options)
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
def request_phase
|
36
|
+
params = { :api_key => api_key, :perms => options[:scope] }
|
37
|
+
params[:api_sig] = flickr_sign(params)
|
38
|
+
query_string = params.collect{ |key,value| "#{key}=#{Rack::Utils.escape(value)}" }.join('&')
|
39
|
+
redirect "http://flickr.com/services/auth/?#{query_string}"
|
40
|
+
end
|
41
|
+
|
42
|
+
def callback_phase
|
43
|
+
params = { :api_key => api_key, :method => 'flickr.auth.getToken', :frob => request.params['frob'], :format => 'json', :nojsoncallback => '1' }
|
44
|
+
params[:api_sig] = flickr_sign(params)
|
45
|
+
|
46
|
+
response = RestClient.get('http://api.flickr.com/services/rest/', { :params => params })
|
47
|
+
auth = MultiJson.decode(response.to_s)
|
48
|
+
raise CallbackError.new(auth['code'],auth['message']) if auth['stat'] == 'fail'
|
49
|
+
|
50
|
+
@user = auth['auth']['user']
|
51
|
+
@access_token = auth['auth']['token']['_content']
|
52
|
+
|
53
|
+
super
|
54
|
+
rescue CallbackError => e
|
55
|
+
fail!(:invalid_response, e)
|
56
|
+
end
|
57
|
+
|
58
|
+
def auth_hash
|
59
|
+
OmniAuth::Utils.deep_merge(super, {
|
60
|
+
'uid' => @user['nsid'],
|
61
|
+
'credentials' => { 'token' => @access_token },
|
62
|
+
'user_info' => @user,
|
63
|
+
'extra' => { 'user_hash' => @user }
|
64
|
+
})
|
65
|
+
end
|
66
|
+
|
67
|
+
def flickr_sign(params)
|
68
|
+
Digest::MD5.hexdigest(secret_key + params.sort{|a,b| a[0].to_s <=> b[0].to_s }.flatten.join)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
module ProvidersConfig
|
76
|
+
end
|
77
|
+
|
78
|
+
Rails.application.config.middleware.use OmniAuth::Builder do
|
79
|
+
PROVIDER_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/providers.yml")[::Rails.env]
|
80
|
+
for p in PROVIDER_CONFIG['providers']
|
81
|
+
provider p['name'], p['key'], p['secret']
|
82
|
+
ProvidersConfig.const_set(p['name'].classify.upcase,{
|
83
|
+
:key => p['key'],
|
84
|
+
:secret => p['secret']
|
85
|
+
})
|
86
|
+
end
|
87
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
providers:
|
3
|
+
- name: twitter
|
4
|
+
key: qLDNyJWYR4uwgVlQ1Z3A
|
5
|
+
secret: EZlvNgye1feUDvF9Mn6XyNgYfILBEfIe17K5xKZyBs
|
6
|
+
- name: facebook
|
7
|
+
key: 141623055893054 #aka app_id
|
8
|
+
secret: 2adbbdd1c5a28f3fac021c5cd1a59f47
|
9
|
+
- name: foursquare
|
10
|
+
key: ZFJLIRWR5VAAS2M3ANVXBGJJ2W0LVOG003W52E0M5JWUV5MP
|
11
|
+
secret: V2XZFYRUEVCU1EI4LCDYNCADX43NEJERJENRLYIL0APSALZ2
|
12
|
+
- name: flickr
|
13
|
+
key: 598bcfd26c5091db5b68713f5126dc26
|
14
|
+
secret: 7cc1ace805d88475
|
15
|
+
- name: meetup
|
16
|
+
key: 776E306E6B28327449134646BBF89807
|
17
|
+
secret: 4CB887C5918F48F3ADE8E0E931F74B70
|
18
|
+
|
19
|
+
development:
|
20
|
+
<<: *defaults
|
21
|
+
|
22
|
+
test:
|
23
|
+
<<: *defaults
|
24
|
+
|
25
|
+
production:
|
26
|
+
<<: *defaults
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class ActsAsConnectableCreateAuthentications < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :authentications do |t|
|
4
|
+
t.references :authenticationable, :polymorphic => true
|
5
|
+
t.string :provider, :null => false, :limit => 64
|
6
|
+
t.string :uid, :null => false, :limit => 128
|
7
|
+
t.string :token, :limit => 128
|
8
|
+
t.string :secret, :limit => 128
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
|
12
|
+
add_index :authentications, [:authenticationable_id, :authenticationable_type], :name => "index_authentications_on_a_id_a_type"
|
13
|
+
add_index :authentications, :provider
|
14
|
+
add_index :authentications, [:provider, :authenticationable_type, :uid]
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.down
|
18
|
+
drop_table :authentications
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module ActsAsConnectable
|
2
|
+
# Default way to setup ActsAsConnectable. Run rails generate acts_as_connectable:install
|
3
|
+
# to create a fresh initializer with all configuration values.
|
4
|
+
def self.setup
|
5
|
+
yield self
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.included(base)
|
9
|
+
base.extend ClassMethods
|
10
|
+
def base.apply_omniauth(omniauth)
|
11
|
+
authentications.build(:provider => omniauth['provider'], :uid => omniauth['uid'])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module ClassMethods
|
16
|
+
def acts_as_connectable(*args)
|
17
|
+
has_many :authentications, {:as => :authenticationable, :dependent => :destroy, :class_name => "Authentication"}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
ActiveRecord::Base.send(:include, ActsAsConnectable)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module ActsAsConnectable
|
2
|
+
## Define ControllerMethods
|
3
|
+
module Controller
|
4
|
+
## this one manages the usual self.included, klass_eval stuff
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
included do
|
8
|
+
before_filter :test_controller_instance_method
|
9
|
+
end
|
10
|
+
|
11
|
+
module InstanceMethods
|
12
|
+
def test_controller_instance_method
|
13
|
+
puts "###### This text is coming from an application_controller before_filter that is being declared and triggered from inside the engine. This before_filter is automatically integrated in when the engine is installed into an app. Look inside lib/application_controller.rb to find it. ######"
|
14
|
+
end
|
15
|
+
|
16
|
+
# This method is available inside application_controller but it is not being
|
17
|
+
# automatically executed. Notice the before_filter line above that is automatically
|
18
|
+
# executing the first method.
|
19
|
+
def second_controller_instance_method
|
20
|
+
puts "###### This method is not automatically run inside application_controller, but it is available inside application_controller. To see this example add 'before_filter :second_controller_instance_method' at the top of your app's application_controller.rb ######"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
::ActionController::Base.send :include, ActsAsConnectable::Controller
|
data/lib/engine.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
module ActsAsConnectable
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
def copy_initializer
|
7
|
+
copy_file "../../../../config/initializers/omniauth.rb", "config/initializers/omniauth.rb"
|
8
|
+
end
|
9
|
+
|
10
|
+
def copy_providers
|
11
|
+
copy_file "../../../../config/providers.yml", "config/providers.yml"
|
12
|
+
end
|
13
|
+
|
14
|
+
def copy_controllers
|
15
|
+
copy_file "../../../../app/controllers/authentications_controller.rb", "app/controllers/authentications_controller.rb"
|
16
|
+
end
|
17
|
+
|
18
|
+
def copy_models
|
19
|
+
copy_file "../../../../app/models/authentication.rb", "app/models/authentication.rb"
|
20
|
+
end
|
21
|
+
|
22
|
+
def copy_helpers
|
23
|
+
copy_file "../../../../app/helpers/layout_helper.rb", "app/helpers/layout_helper.rb"
|
24
|
+
end
|
25
|
+
|
26
|
+
def copy_views
|
27
|
+
directory "../../../../app/views/authentications", "app/views/authentications"
|
28
|
+
end
|
29
|
+
|
30
|
+
def copy_assets
|
31
|
+
directory "../../../../public/images/acts_as_connectable", "public/images/acts_as_connectable"
|
32
|
+
end
|
33
|
+
|
34
|
+
def copy_migration
|
35
|
+
#copy_file "../../../../db/migrate/create_authentications.rb", "db/migrate/#{Time.now.utc.strftime("%Y%m%d%H%M%S")}_acts_as_connectable_create_authentications.rb"
|
36
|
+
end
|
37
|
+
|
38
|
+
def show_readme
|
39
|
+
#readme "README" if behavior == :invoke
|
40
|
+
end
|
41
|
+
|
42
|
+
def copy_routes
|
43
|
+
route "match '/auth/:provider/callback' => 'authentications#create'"
|
44
|
+
route "resources :authentications"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: acts_as_connectable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Cody Swann
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2011-02-14 00:00:00 -08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: omniauth
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 1
|
31
|
+
- 6
|
32
|
+
version: 0.1.6
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: devise
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
segments:
|
44
|
+
- 1
|
45
|
+
- 1
|
46
|
+
- 5
|
47
|
+
version: 1.1.5
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
description: Aids in configuring OmniAuth and desvise
|
51
|
+
email:
|
52
|
+
- cody@gunnertech.com
|
53
|
+
executables: []
|
54
|
+
|
55
|
+
extensions: []
|
56
|
+
|
57
|
+
extra_rdoc_files: []
|
58
|
+
|
59
|
+
files:
|
60
|
+
- .gitignore
|
61
|
+
- Gemfile
|
62
|
+
- Rakefile
|
63
|
+
- acts_as_connectable.gemspec
|
64
|
+
- app/controllers/authentications_controller.rb
|
65
|
+
- app/helpers/layout_helper.erb
|
66
|
+
- app/models/authentication.rb
|
67
|
+
- app/views/authentications/index.html.erb
|
68
|
+
- config/initializers/omniauth.rb
|
69
|
+
- config/providers.yml
|
70
|
+
- db/migrate/create_authentications.rb
|
71
|
+
- lib/acts_as_connectable.rb
|
72
|
+
- lib/acts_as_connectable/version.rb
|
73
|
+
- lib/application_controller.rb
|
74
|
+
- lib/application_helper.rb
|
75
|
+
- lib/engine.rb
|
76
|
+
- lib/generators/acts_as_connectable/acts_as_connectable_generator.rb
|
77
|
+
- lib/generators/acts_as_connectable/install_generator.rb
|
78
|
+
- public/images/acts_as_connectable/aol_128.png
|
79
|
+
- public/images/acts_as_connectable/aol_256.png
|
80
|
+
- public/images/acts_as_connectable/aol_32.png
|
81
|
+
- public/images/acts_as_connectable/aol_64.png
|
82
|
+
- public/images/acts_as_connectable/basecamp_128.png
|
83
|
+
- public/images/acts_as_connectable/basecamp_256.png
|
84
|
+
- public/images/acts_as_connectable/basecamp_32.png
|
85
|
+
- public/images/acts_as_connectable/basecamp_64.png
|
86
|
+
- public/images/acts_as_connectable/campfire_128.png
|
87
|
+
- public/images/acts_as_connectable/campfire_256.png
|
88
|
+
- public/images/acts_as_connectable/campfire_32.png
|
89
|
+
- public/images/acts_as_connectable/campfire_64.png
|
90
|
+
- public/images/acts_as_connectable/facebook_128.png
|
91
|
+
- public/images/acts_as_connectable/facebook_256.png
|
92
|
+
- public/images/acts_as_connectable/facebook_32.png
|
93
|
+
- public/images/acts_as_connectable/facebook_64.png
|
94
|
+
- public/images/acts_as_connectable/github_128.png
|
95
|
+
- public/images/acts_as_connectable/github_256.png
|
96
|
+
- public/images/acts_as_connectable/github_32.png
|
97
|
+
- public/images/acts_as_connectable/github_64.png
|
98
|
+
- public/images/acts_as_connectable/google_128.png
|
99
|
+
- public/images/acts_as_connectable/google_256.png
|
100
|
+
- public/images/acts_as_connectable/google_32.png
|
101
|
+
- public/images/acts_as_connectable/google_64.png
|
102
|
+
- public/images/acts_as_connectable/linkedin_128.png
|
103
|
+
- public/images/acts_as_connectable/linkedin_256.png
|
104
|
+
- public/images/acts_as_connectable/linkedin_32.png
|
105
|
+
- public/images/acts_as_connectable/linkedin_64.png
|
106
|
+
- public/images/acts_as_connectable/myspace_128.png
|
107
|
+
- public/images/acts_as_connectable/myspace_256.png
|
108
|
+
- public/images/acts_as_connectable/myspace_32.png
|
109
|
+
- public/images/acts_as_connectable/myspace_64.png
|
110
|
+
- public/images/acts_as_connectable/openid_128.png
|
111
|
+
- public/images/acts_as_connectable/openid_256.png
|
112
|
+
- public/images/acts_as_connectable/openid_32.png
|
113
|
+
- public/images/acts_as_connectable/openid_64.png
|
114
|
+
- public/images/acts_as_connectable/presently_128.png
|
115
|
+
- public/images/acts_as_connectable/presently_256.png
|
116
|
+
- public/images/acts_as_connectable/presently_32.png
|
117
|
+
- public/images/acts_as_connectable/presently_64.png
|
118
|
+
- public/images/acts_as_connectable/rails.png
|
119
|
+
- public/images/acts_as_connectable/twitter_128.png
|
120
|
+
- public/images/acts_as_connectable/twitter_256.png
|
121
|
+
- public/images/acts_as_connectable/twitter_32.png
|
122
|
+
- public/images/acts_as_connectable/twitter_64.png
|
123
|
+
- public/images/acts_as_connectable/yahoo_128.png
|
124
|
+
- public/images/acts_as_connectable/yahoo_256.png
|
125
|
+
- public/images/acts_as_connectable/yahoo_32.png
|
126
|
+
- public/images/acts_as_connectable/yahoo_64.png
|
127
|
+
has_rdoc: true
|
128
|
+
homepage: http://gunnertech.com
|
129
|
+
licenses: []
|
130
|
+
|
131
|
+
post_install_message:
|
132
|
+
rdoc_options: []
|
133
|
+
|
134
|
+
require_paths:
|
135
|
+
- lib
|
136
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
segments:
|
142
|
+
- 0
|
143
|
+
version: "0"
|
144
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ">="
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
segments:
|
150
|
+
- 0
|
151
|
+
version: "0"
|
152
|
+
requirements: []
|
153
|
+
|
154
|
+
rubyforge_project: acts_as_connectable
|
155
|
+
rubygems_version: 1.3.7
|
156
|
+
signing_key:
|
157
|
+
specification_version: 3
|
158
|
+
summary: A gem for wiring models, polymorphically, to social accounts using omniAuth and devise
|
159
|
+
test_files: []
|
160
|
+
|