authpwn_rails 0.10.0 → 0.10.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.
data/README.rdoc CHANGED
@@ -15,6 +15,11 @@ Note: the code inside the models and controllers is tucked away in the plug-in.
15
15
  The scaffold models and controllers are there as extension points. You will be
16
16
  able to update the plug-in without regenerating the scaffolds.
17
17
 
18
+ == Migrating from authpwn 0.9 or older?
19
+
20
+ See legacy/migrate_09_to_010.rb for a semi-automated way of migrating your
21
+ database.
22
+
18
23
  == Note on Patches/Pull Requests
19
24
 
20
25
  * Fork the project.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.0
1
+ 0.10.1
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "authpwn_rails"
8
- s.version = "0.10.0"
8
+ s.version = "0.10.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Victor Costan"]
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  "VERSION",
29
29
  "app/helpers/session_helper.rb",
30
30
  "authpwn_rails.gemspec",
31
+ "legacy/migrate_09_to_010.rb",
31
32
  "lib/authpwn_rails.rb",
32
33
  "lib/authpwn_rails/credential_model.rb",
33
34
  "lib/authpwn_rails/credentials.rb",
@@ -38,7 +39,7 @@ Gem::Specification.new do |s|
38
39
  "lib/authpwn_rails/facebook_session.rb",
39
40
  "lib/authpwn_rails/generators/all_generator.rb",
40
41
  "lib/authpwn_rails/generators/templates/001_create_users.rb",
41
- "lib/authpwn_rails/generators/templates/002_create_credentials.rb",
42
+ "lib/authpwn_rails/generators/templates/003_create_credentials.rb",
42
43
  "lib/authpwn_rails/generators/templates/credential.rb",
43
44
  "lib/authpwn_rails/generators/templates/credentials.yml",
44
45
  "lib/authpwn_rails/generators/templates/session/forbidden.html.erb",
@@ -0,0 +1,61 @@
1
+ # This script migrates an authpwn <= 0.9 database to the new 0.10 layout.
2
+ # It should be run in a rails console.
3
+
4
+
5
+ # Remove obsolete Facebook token files.
6
+ [
7
+ 'app/models/facebook_token.rb',
8
+ 'db/migrate/20100725000002_create_facebook_tokens.rb',
9
+ 'test/fixtures/facebook_tokens.yml'
10
+ ].each do |f|
11
+ File.unlink f if File.exist?(f)
12
+ end
13
+
14
+ # Re-generate scaffolds.
15
+ Kernel.system 'rails g authpwn:all'
16
+
17
+ # Get the credentials table.
18
+ Kernel.system "rake db:migrate:up VERSION=20100725000003 RAILS_ENV=#{Rails.env}"
19
+
20
+ # Build up credentials.
21
+ reload!
22
+ User.all.each do |user|
23
+ Credentials::Email.create! :user => user, :email => user.attributes['email']
24
+
25
+ pwd = Credentials::Password.new :user => user
26
+ pwd.password = pwd.password_confirmation = '_'
27
+ pwd.key = user.password_salt + '|' + user.password_hash
28
+ pwd.save!
29
+ end
30
+
31
+ # Update the columns in the User model.
32
+ class UpgradeUserModel < ActiveRecord::Migration
33
+ def change
34
+ remove_column :users, :email
35
+ remove_column :users, :email_hash
36
+ remove_column :users, :password_salt
37
+ remove_column :users, :password_hash
38
+
39
+ add_column :users, :exuid, :string, :length => 32, :null => true
40
+ end
41
+ end
42
+ UpgradeUserModel.migrate :up
43
+ reload!
44
+
45
+ # Assign unique IDs to all users.
46
+ User.all.each do |user|
47
+ user.set_default_exuid
48
+ sleep 0.01
49
+ user.save!
50
+ end
51
+
52
+ # Finish the upgrade of the User model.
53
+ class FinishUpgradingUserModel < ActiveRecord::Migration
54
+ def change
55
+ change_column :users, :exuid, :string, :length => 32, :null => false
56
+ add_index :users, :exuid, :unique => true, :null => false
57
+ end
58
+ end
59
+ FinishUpgradingUserModel.migrate :up
60
+ reload!
61
+
@@ -27,4 +27,10 @@ module Authpwn::UserModel::InstanceMethods
27
27
  def email_credential
28
28
  credentials.find { |c| c.instance_of?(Credentials::Email) }
29
29
  end
30
+
31
+ # The e-mail from the user's Email credential, or nil no credential exists.
32
+ def email
33
+ credential = self.email_credential
34
+ credential && credential.email
35
+ end
30
36
  end # module Authpwn::UserModel::InstanceMethods
@@ -5,6 +5,12 @@
5
5
  # means that we have to load the classes that inherit from Credential after it's
6
6
  # defined, which is long after the authpwn_rails engine is loaded.
7
7
 
8
- require 'authpwn_rails/credentials/email.rb'
9
- require 'authpwn_rails/credentials/facebook.rb'
10
- require 'authpwn_rails/credentials/password.rb'
8
+ require 'active_support'
9
+
10
+ module Credentials
11
+ extend ActiveSupport::Autoload
12
+
13
+ autoload :Email, 'authpwn_rails/credentials/email.rb'
14
+ autoload :Facebook, 'authpwn_rails/credentials/facebook.rb'
15
+ autoload :Password, 'authpwn_rails/credentials/password.rb'
16
+ end
@@ -14,8 +14,8 @@ class AllGenerator < Rails::Generators::Base
14
14
 
15
15
  def create_credential_model
16
16
  copy_file 'credential.rb', File.join('app', 'models', 'credential.rb')
17
- copy_file '002_create_credentials.rb',
18
- File.join('db', 'migrate', '20100725000002_create_credentials.rb')
17
+ copy_file '003_create_credentials.rb',
18
+ File.join('db', 'migrate', '20100725000003_create_credentials.rb')
19
19
  copy_file 'credentials.yml',
20
20
  File.join('test', 'fixtures', 'credentials.yml')
21
21
  end
@@ -5,9 +5,6 @@ class Credential < ActiveRecord::Base
5
5
  # Add your extensions to the Credential class here.
6
6
  end
7
7
 
8
- # Load built-in credential types, such as Email and Password.
9
- require 'authpwn_rails/credentials.rb'
10
-
11
8
  # namespace for all Credential subclasses
12
9
  module Credentials
13
10
 
@@ -11,7 +11,7 @@
11
11
  </p>
12
12
  <% end %>
13
13
 
14
- <%= form_tag :url => session_path do %>
14
+ <%= form_tag session_path do %>
15
15
  <div class="field">
16
16
  <%= label_tag :email, 'Email Address' %><br />
17
17
  <%= email_field_tag :email, @email %>
data/lib/authpwn_rails.rb CHANGED
@@ -3,6 +3,7 @@ module Authpwn
3
3
  end
4
4
 
5
5
  require 'authpwn_rails/credential_model.rb'
6
+ require 'authpwn_rails/credentials.rb'
6
7
  require 'authpwn_rails/facebook_session.rb'
7
8
  require 'authpwn_rails/session.rb'
8
9
  require 'authpwn_rails/session_controller.rb'
@@ -47,4 +47,10 @@ class EmailCredentialTest < ActiveSupport::TestCase
47
47
  assert_equal credentials(:jane_email), users(:jane).email_credential
48
48
  assert_nil users(:bill).email_credential
49
49
  end
50
+
51
+ test 'User#email' do
52
+ assert_equal credentials(:john_email).email, users(:john).email
53
+ assert_equal credentials(:jane_email).email, users(:jane).email
54
+ assert_nil users(:bill).email
55
+ end
50
56
  end
@@ -5,7 +5,7 @@ ActiveRecord::Base.configurations = true
5
5
  ActiveRecord::Migration.verbose = false
6
6
  require 'authpwn_rails/generators/templates/001_create_users.rb'
7
7
  CreateUsers.migrate :up
8
- require 'authpwn_rails/generators/templates/002_create_credentials.rb'
8
+ require 'authpwn_rails/generators/templates/003_create_credentials.rb'
9
9
  CreateCredentials.migrate :up
10
10
 
11
11
  require 'authpwn_rails/generators/templates/user.rb'
@@ -59,7 +59,7 @@ class SessionControllerApiTest < ActionController::TestCase
59
59
  assert_template :new
60
60
  assert_nil assigns(:current_user), 'current_user should not be set'
61
61
 
62
- assert_select 'form' do
62
+ assert_select 'form[action="/session"]' do
63
63
  assert_select 'input#email'
64
64
  assert_select 'input#password'
65
65
  assert_select 'input[type=submit]'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authpwn_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.10.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-11-21 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fbgraph_rails
16
- requirement: &16565780 !ruby/object:Gem::Requirement
16
+ requirement: &10153440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 0.2.2
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *16565780
24
+ version_requirements: *10153440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &16564740 !ruby/object:Gem::Requirement
27
+ requirement: &10152600 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 3.1.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *16564740
35
+ version_requirements: *10152600
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: bundler
38
- requirement: &16563820 !ruby/object:Gem::Requirement
38
+ requirement: &10151940 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 1.0.0
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *16563820
46
+ version_requirements: *10151940
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: flexmock
49
- requirement: &16563000 !ruby/object:Gem::Requirement
49
+ requirement: &10151200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.9.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *16563000
57
+ version_requirements: *10151200
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &16561920 !ruby/object:Gem::Requirement
60
+ requirement: &10150220 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.0
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *16561920
68
+ version_requirements: *10150220
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &16560900 !ruby/object:Gem::Requirement
71
+ requirement: &10149480 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *16560900
79
+ version_requirements: *10149480
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: sqlite3
82
- requirement: &16540280 !ruby/object:Gem::Requirement
82
+ requirement: &10148440 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,7 +87,7 @@ dependencies:
87
87
  version: 1.3.3
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *16540280
90
+ version_requirements: *10148440
91
91
  description: Works with Facebook.
92
92
  email: victor@costan.us
93
93
  executables: []
@@ -107,6 +107,7 @@ files:
107
107
  - VERSION
108
108
  - app/helpers/session_helper.rb
109
109
  - authpwn_rails.gemspec
110
+ - legacy/migrate_09_to_010.rb
110
111
  - lib/authpwn_rails.rb
111
112
  - lib/authpwn_rails/credential_model.rb
112
113
  - lib/authpwn_rails/credentials.rb
@@ -117,7 +118,7 @@ files:
117
118
  - lib/authpwn_rails/facebook_session.rb
118
119
  - lib/authpwn_rails/generators/all_generator.rb
119
120
  - lib/authpwn_rails/generators/templates/001_create_users.rb
120
- - lib/authpwn_rails/generators/templates/002_create_credentials.rb
121
+ - lib/authpwn_rails/generators/templates/003_create_credentials.rb
121
122
  - lib/authpwn_rails/generators/templates/credential.rb
122
123
  - lib/authpwn_rails/generators/templates/credentials.yml
123
124
  - lib/authpwn_rails/generators/templates/session/forbidden.html.erb
@@ -160,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
161
  version: '0'
161
162
  segments:
162
163
  - 0
163
- hash: -1320439618928497186
164
+ hash: 2383073164549657310
164
165
  required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  none: false
166
167
  requirements: