reflex 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,11 +14,6 @@ use it as a basis, if you get stuck.
14
14
 
15
15
  === 2. Install Reflex
16
16
 
17
- *WARNING!* Because the reflex gem is not yet available, the notes below are incorrect. For now,
18
- simply install reflex as a rails plugin and _don't_ add it in your environment.rb or Gemfile:
19
-
20
- $ script/plugin install git@github.com:i76/reflex.git
21
-
22
17
  Add the gem dependencies in your config:
23
18
 
24
19
  ==== Rails 2.3
@@ -42,7 +37,6 @@ Add the dependencies to your Gemfile
42
37
  And install them:
43
38
 
44
39
  $ bundle install
45
- $ bundle lock
46
40
 
47
41
  === 3. Generate the reflex_connections migration
48
42
 
@@ -179,6 +173,8 @@ The reflex gem is far from finished. Here are some of the upcoming features:
179
173
  then it should be a matter of calling:
180
174
  `@user.twitter.update_status("I've connected my Twitter profile")`
181
175
 
176
+ 2. Better support for connecting a previously connected user
177
+
182
178
  == Note on Patches/Pull Requests
183
179
 
184
180
  * Fork the project.
data/Rakefile CHANGED
@@ -27,16 +27,40 @@ rescue LoadError
27
27
  puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
28
28
  end
29
29
 
30
- require 'spec/rake/spectask'
31
- Spec::Rake::SpecTask.new(:spec) do |spec|
32
- spec.libs << 'lib' << 'spec'
33
- spec.spec_files = FileList['spec/**/*_spec.rb']
34
- end
30
+ begin
31
+ # Rspec 1.3.0
32
+ require 'spec/rake/spectask'
33
+
34
+ desc 'Default: run specs'
35
+ task :default => :spec
36
+ Spec::Rake::SpecTask.new do |t|
37
+ t.spec_files = FileList["spec/**/*_spec.rb"]
38
+ end
35
39
 
36
- Spec::Rake::SpecTask.new(:rcov) do |spec|
37
- spec.libs << 'lib' << 'spec'
38
- spec.pattern = 'spec/**/*_spec.rb'
39
- spec.rcov = true
40
+ Spec::Rake::SpecTask.new('rcov') do |t|
41
+ t.spec_files = FileList["spec/**/*_spec.rb"]
42
+ t.rcov = true
43
+ t.rcov_opts = ['--exclude', 'spec']
44
+ end
45
+
46
+ rescue LoadError
47
+ # Rspec 2.0
48
+ require 'rspec/core/rake_task'
49
+
50
+ desc 'Default: run specs'
51
+ task :default => :spec
52
+ Rspec::Core::RakeTask.new do |t|
53
+ t.pattern = "spec/**/*_spec.rb"
54
+ end
55
+
56
+ Rspec::Core::RakeTask.new('rcov') do |t|
57
+ t.pattern = "spec/**/*_spec.rb"
58
+ t.rcov = true
59
+ t.rcov_opts = ['--exclude', 'spec']
60
+ end
61
+
62
+ rescue LoadError
63
+ puts "Rspec not available. Install it with: gem install rspec"
40
64
  end
41
65
 
42
66
  task :spec => :check_dependencies
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -10,11 +10,14 @@ module Reflex
10
10
 
11
11
  # Overwrite authlogic validation options so they are skipped when saving a react account:
12
12
  [:validates_uniqueness_of_login_field_options,
13
+ :validates_length_of_login_field_options,
14
+ :validates_format_of_login_field_options,
15
+ :validates_uniqueness_of_email_field_options,
16
+ :validates_length_of_email_field_options,
17
+ :validates_format_of_email_field_options,
13
18
  :validates_length_of_password_field_options,
14
19
  :validates_confirmation_of_password_field_options,
15
- :validates_length_of_password_confirmation_field_options,
16
- :validates_length_of_login_field_options,
17
- :validates_format_of_login_field_options].each do |validate_options|
20
+ :validates_length_of_password_confirmation_field_options].each do |validate_options|
18
21
  current_options = base.send(validate_options)
19
22
 
20
23
  base.cattr_accessor "original_#{validate_options}"
@@ -42,11 +45,10 @@ module Reflex
42
45
  record = new()
43
46
  connection = record.reflex_connections.build(:provider => provider)
44
47
 
45
- if react_profile
46
- record.react_profile = react_profile if record.respond_to?(:react_profile=)
47
- end
48
-
48
+ record.react_profile = react_profile if record.respond_to?(:react_profile=)
49
+ record.persistence_token = ::Authlogic::Random.hex_token if record.respond_to?(:persistence_token=)
49
50
  record.save_without_session_maintenance
51
+
50
52
  [record, connection]
51
53
  end
52
54
  end
@@ -16,8 +16,9 @@ module Reflex
16
16
  reflex_controller.redirect_to(result['redirectUrl'])
17
17
  end
18
18
 
19
+
19
20
  def react_provider
20
- reflex_controller.params && reflex_controller.params['react_provider']
21
+ reflex_controller.params && reflex_controller.params['react_provider']
21
22
  end
22
23
 
23
24
  def react_oauth_session
@@ -8,7 +8,7 @@ module Reflex
8
8
  def call(env)
9
9
  # if :react_callback_method is available in the session and the requested URL's query
10
10
  # contains ReactOAuthSession, change the REQUEST_METHOD to :react_callback_method
11
- if env["rack.session"][:react_callback_method].present? && env["QUERY_STRING"] =~ /ReactOAuthSession/
11
+ if env["rack.session"][:react_callback_method].present? && env["QUERY_STRING"] =~ /ReactOAuthSession/
12
12
  env["REQUEST_METHOD"] = env["rack.session"].delete(:react_callback_method).to_s.upcase
13
13
 
14
14
  if env["rack.session"][:react_callback_location].present?
@@ -35,6 +35,10 @@ module Reflex
35
35
  end
36
36
 
37
37
  private
38
+
39
+ def authenticating_via_oauth_server?
40
+ super
41
+ end
38
42
 
39
43
  def connect_to_provider!
40
44
  if redirecting_to_oauth_server?
@@ -25,6 +25,15 @@ module Reflex
25
25
 
26
26
  private
27
27
 
28
+ def react_provider
29
+ reflex_controller.params && reflex_controller.params['react_provider']
30
+ end
31
+
32
+ # If we are already logged in, we are not going to authenticate again!
33
+ def authenticating_via_oauth_server?
34
+ attempted_record.nil? && errors.empty? && super
35
+ end
36
+
28
37
  def authenticate_oauth_session(allow_retry = true)
29
38
  # Request the React Session
30
39
  oauth_session = Reflex::OAuthServer.token_access(reflex_controller.params)
@@ -46,10 +55,10 @@ module Reflex
46
55
  else
47
56
  # User is not yet known on React's side, so create it:
48
57
  react_profile = Reflex::OAuthServer.session_get_profile(react_oauth_session)
49
-
58
+
50
59
  # Create a user record with a connection to this provider
51
60
  self.attempted_record, connection = klass.create_for_react(react_provider, react_profile)
52
-
61
+
53
62
  if !attempted_record.new_record?
54
63
  # Set the user id on react's side:
55
64
  Reflex::OAuthServer.token_set_user_id(connection.uuid, react_oauth_session)
@@ -3,7 +3,7 @@ require 'xmlrpc/client'
3
3
  # unfortunately react's oauth server has <nil />'s, which the ruby XMLRPC
4
4
  # library does not enable by default, because it is an XML-RPC extension:
5
5
  # http://ontosys.com/xml-rpc/extensions.php
6
- old_verbose, $VERBOSE = $VERBOSE, nil
6
+ old_verbose, $VERBOSE = $VERBOSE, nil
7
7
  begin
8
8
  XMLRPC::Config::ENABLE_NIL_PARSER = true
9
9
  XMLRPC::Config::ENABLE_NIL_CREATE = true
@@ -8,7 +8,7 @@ class CreateReflexConnections < ActiveRecord::Migration
8
8
  t.timestamps
9
9
  end
10
10
 
11
- add_index :reflex_connections, [:authorizable_type, :authorizable_id], :unique => false
11
+ add_index :reflex_connections, [:authorizable_type, :authorizable_id], :unique => false, :name => 'reflex_connection_authorizable'
12
12
  end
13
13
 
14
14
  def self.down
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{reflex}
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tom-Eric Gerritsen"]
12
- s.date = %q{2010-05-01}
12
+ s.date = %q{2010-05-03}
13
13
  s.description = %q{Reflex is a gem that allows you to connect your application to the React Social API}
14
14
  s.email = %q{tomeric@i76.nl}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 2
9
- version: 0.0.2
8
+ - 3
9
+ version: 0.0.3
10
10
  platform: ruby
11
11
  authors:
12
12
  - Tom-Eric Gerritsen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-05-01 00:00:00 +02:00
17
+ date: 2010-05-03 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency