acts_as_connectable 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|