oauned 1.0.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ rescue LoadError
7
7
  end
8
8
 
9
9
  require 'rake'
10
- require 'rake/rdoctask'
10
+ require 'rdoc/task'
11
11
 
12
12
 
13
13
  require 'rspec/core'
@@ -89,6 +89,6 @@ class Oauned::OauthController < ApplicationController
89
89
  end
90
90
 
91
91
  def refresh_token?
92
- params[:grant_type] == 'refresh-token'
92
+ params[:grant_type] == 'refresh_token'
93
93
  end
94
94
  end
@@ -1,8 +1,6 @@
1
- module Oauned
2
- autoload :ControllerMethods, 'oauned/controller_methods'
3
- autoload :Models, 'oauned/models'
4
- autoload :Version, 'oauned/version'
5
-
6
- end
7
-
1
+ require 'oauned/controller_methods'
2
+ require 'oauned/models'
3
+ require 'oauned/version'
4
+ require 'oauned/strategy'
5
+ require 'oauned/devise'
8
6
  require 'oauned/rails'
@@ -3,11 +3,11 @@ module Oauned
3
3
  def self.included(klass)
4
4
  klass.class_eval do
5
5
  cattr_accessor :oauth_options, :oauth_options_proc
6
-
6
+
7
7
  protected
8
8
  def self.deny_oauth(options = {}, &block)
9
9
  raise 'options cannot contain both :only and :except' if options[:only] && options[:except]
10
-
10
+
11
11
  [:only, :except].each do |k|
12
12
  if values = options[k]
13
13
  options[k] = Array(values).map(&:to_s).to_set
@@ -16,22 +16,7 @@ module Oauned
16
16
  self.oauth_options = options
17
17
  self.oauth_options_proc = block
18
18
  end
19
-
20
- def oauth_user
21
- @oauth_user ||= oauth_allowed? ? user_from_oauth : nil
22
- end
23
-
24
- alias :normal_user :current_user
25
- def current_user
26
- normal_user || oauth_user
27
- end
28
-
29
- private
30
- def user_from_oauth
31
- token = Connection.where(['access_token LIKE ?', params[:access_token]]).first
32
- token.user if (token && !token.expired?)
33
- end
34
-
19
+
35
20
  def oauth_allowed?
36
21
  return true if (oauth_options_proc && !oauth_options_proc.call(self)) || oauth_options.nil?
37
22
  return false if oauth_options.empty?
@@ -0,0 +1,10 @@
1
+ require 'devise'
2
+ Devise.add_module :oauthable,
3
+ :model => 'oauned/models/oauthable',
4
+ :strategy => true
5
+
6
+ Devise.setup do |config|
7
+ config.warden do |manager|
8
+ manager.default_strategies(:scope => :user).unshift(:oauthable)
9
+ end
10
+ end
@@ -1,8 +1,4 @@
1
1
  module Oauned::Models
2
- autoload :Application, 'oauned/models/application'
3
- autoload :Authorization, 'oauned/models/authorization'
4
- autoload :Connection, 'oauned/models/connection'
5
-
6
2
 
7
3
  @@models = {}
8
4
  def self.[](key)
@@ -13,3 +9,8 @@ module Oauned::Models
13
9
  @@models[key] = value
14
10
  end
15
11
  end
12
+
13
+ require 'oauned/models/application'
14
+ require 'oauned/models/authorization'
15
+ require 'oauned/models/connection'
16
+ require 'oauned/models/oauthable'
@@ -3,10 +3,11 @@ module Oauned::Models::Application
3
3
  Oauned::Models['application'] = klass
4
4
 
5
5
  klass.class_eval do
6
- before_create :set_default
6
+ before_validation :set_default,
7
+ :on => :create
7
8
 
8
9
  def authorize!(user)
9
- Authorization.create!(:user_id => user.id, :application_id => id)
10
+ Oauned::Models['authorization'].create!(:user_id => user.id, :application_id => id)
10
11
  end
11
12
 
12
13
  private
@@ -3,7 +3,8 @@ module Oauned::Models::Authorization
3
3
  Oauned::Models['authorization'] = klass
4
4
 
5
5
  klass.class_eval do
6
- before_create :set_default
6
+ before_validation :set_default,
7
+ :on => :create
7
8
 
8
9
  def expires_in
9
10
  (expires_at - Time.now).to_i
@@ -14,7 +15,7 @@ module Oauned::Models::Authorization
14
15
 
15
16
  def tokenize!
16
17
  self.destroy
17
- Connection.create!(:user_id => user_id, :application_id => application_id)
18
+ Oauned::Models['connection'].create!(:user_id => user_id, :application_id => application_id)
18
19
  end
19
20
 
20
21
  private
@@ -3,7 +3,8 @@ module Oauned::Models::Connection
3
3
  Oauned::Models['connection'] = klass
4
4
 
5
5
  klass.class_eval do
6
- before_create :set_default
6
+ before_validation :set_default,
7
+ :on => :create
7
8
 
8
9
  def expires_in
9
10
  (expires_at - Time.now).to_i
@@ -14,7 +15,7 @@ module Oauned::Models::Connection
14
15
 
15
16
  def refresh
16
17
  self.destroy
17
- Connection.create!(:user_id => user.id, :application_id => application.id)
18
+ self.class.create!(:user_id => user.id, :application_id => application.id)
18
19
  end
19
20
 
20
21
  private
@@ -0,0 +1,19 @@
1
+ require 'devise'
2
+
3
+ module Oauned
4
+ module Models
5
+ module Oauthable
6
+ extend ActiveSupport::Concern
7
+
8
+ module ClassMethods
9
+
10
+ def find_for_oauth_authentication(access_token)
11
+ token = Oauned::Models['connection'].where(['access_token LIKE ?', access_token]).first
12
+ token.user if (token && !token.expired?)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ Devise::Models::Oauthable = Oauned::Models::Oauthable
@@ -2,14 +2,5 @@ require 'oauned/rails/routing'
2
2
 
3
3
  module Oauned
4
4
  class Engine < ::Rails::Engine
5
- # Force routes to be loaded if we are doing any eager load.
6
- config.before_eager_load { |app| app.reload_routes! }
7
-
8
- initializer "oauned.controller_helpers", :after=> :disable_dependency_loading do
9
- ActiveSupport.on_load(:action_controller) do
10
- include Oauned::ControllerMethods
11
-
12
- end
13
- end
14
5
  end
15
- end
6
+ end
@@ -0,0 +1,27 @@
1
+ require 'warden'
2
+
3
+ module Oauned
4
+ class Strategy < Devise::Strategies::Authenticatable
5
+
6
+ def valid?
7
+ !access_token.nil?
8
+ end
9
+
10
+ def authenticate!
11
+ resource = mapping.to.find_for_oauth_authentication access_token
12
+
13
+ if resource
14
+ success!(resource)
15
+ else
16
+ fail(:invalid)
17
+ end
18
+ end
19
+
20
+ def access_token
21
+ match = request.authorization.match(/^OAuth2 (.*)$/) if request.authorization
22
+ match.nil? ? nil : match[1]
23
+ end
24
+ end
25
+ end
26
+
27
+ Warden::Strategies.add(:oauthable, Oauned::Strategy)
@@ -1,3 +1,3 @@
1
1
  module Oauned
2
- VERSION = "1.0.2"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauned
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,8 +9,30 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-30 00:00:00.000000000Z
13
- dependencies: []
12
+ date: 2012-05-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rails
16
+ requirement: &70224896775220 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '3.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70224896775220
25
+ - !ruby/object:Gem::Dependency
26
+ name: devise
27
+ requirement: &70224896774300 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '1.5'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70224896774300
14
36
  description: Rails Engine to be an Oauth Provider
15
37
  email:
16
38
  executables: []
@@ -24,12 +46,15 @@ files:
24
46
  - lib/generators/oauned/templates/migration.rb
25
47
  - lib/generators/oauned/templates/migration_existing.rb
26
48
  - lib/oauned/controller_methods.rb
49
+ - lib/oauned/devise.rb
27
50
  - lib/oauned/models/application.rb
28
51
  - lib/oauned/models/authorization.rb
29
52
  - lib/oauned/models/connection.rb
53
+ - lib/oauned/models/oauthable.rb
30
54
  - lib/oauned/models.rb
31
55
  - lib/oauned/rails/routing.rb
32
56
  - lib/oauned/rails.rb
57
+ - lib/oauned/strategy.rb
33
58
  - lib/oauned/version.rb
34
59
  - lib/oauned.rb
35
60
  - MIT-LICENSE
@@ -55,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
55
80
  version: '0'
56
81
  requirements: []
57
82
  rubyforge_project:
58
- rubygems_version: 1.8.10
83
+ rubygems_version: 1.8.17
59
84
  signing_key:
60
85
  specification_version: 3
61
86
  summary: Oauth Provider