spree_auth 0.30.2 → 0.40.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of spree_auth might be problematic. Click here for more details.
- data/app/controllers/checkout_controller_decorator.rb +2 -2
- data/app/controllers/orders_controller_decorator.rb +4 -3
- data/app/controllers/resource_controller_decorator.rb +6 -2
- data/app/controllers/spree/base_controller_decorator.rb +8 -25
- data/app/controllers/user_password_resets_controller.rb +20 -0
- data/app/controllers/user_registrations_controller.rb +56 -0
- data/app/controllers/user_sessions_controller.rb +21 -82
- data/app/controllers/users_controller.rb +1 -13
- data/app/helpers/users_helper.rb +13 -0
- data/app/models/ability.rb +4 -4
- data/app/models/order_decorator.rb +4 -3
- data/app/models/spree_current_order_decorator.rb +1 -1
- data/app/models/tokenized_permission.rb +3 -0
- data/app/models/user.rb +14 -16
- data/app/models/user_mailer.rb +2 -3
- data/app/views/checkout/registration.html.erb +1 -1
- data/app/views/shared/_error_messages.html.erb +1 -1
- data/app/views/shared/_login.html.erb +20 -0
- data/app/views/shared/_login_bar.html.erb +1 -1
- data/app/views/shared/_user_form.html.erb +17 -0
- data/app/views/user_mailer/{password_reset_instructions.erb → reset_password_instructions.text.erb} +0 -0
- data/app/views/user_password_resets/edit.html.erb +15 -0
- data/app/views/{password_resets → user_password_resets}/new.html.erb +4 -4
- data/app/views/{users → user_registrations}/new.html.erb +2 -2
- data/app/views/user_sessions/new.html.erb +6 -2
- data/app/views/users/edit.html.erb +1 -1
- data/config/initializers/devise.rb +136 -0
- data/config/locales/en.yml +45 -0
- data/config/routes.rb +14 -7
- data/db/migrate/20101101185116_rename_columns_for_devise.rb +38 -0
- data/db/migrate/20101214150824_convert_user_remember_field.rb +11 -0
- data/db/migrate/20101217012656_create_tokenized_permissions.rb +18 -0
- data/db/migrate/20101219201531_tokens_for_legacy_orders.rb +12 -0
- data/db/sample/users.rb +1 -1
- data/lib/spree/token_resource.rb +23 -0
- data/lib/spree_auth.rb +13 -2
- data/lib/tasks/install.rake +0 -1
- metadata +35 -23
- data/app/models/user_session.rb +0 -3
- data/app/views/password_resets/edit.html.erb +0 -12
- data/lib/cancan/controller_additions.rb +0 -60
- data/lib/spree/auth_user.rb +0 -16
@@ -0,0 +1,12 @@
|
|
1
|
+
class TokensForLegacyOrders < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
# add token permissions for legacy orders (stop relying on user persistence token)
|
4
|
+
Order.all.each do |order|
|
5
|
+
next unless order.user
|
6
|
+
order.create_tokenized_permission(:token => order.user.persistence_token)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.down
|
11
|
+
end
|
12
|
+
end
|
data/db/sample/users.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
module Spree::TokenResource
|
2
|
+
|
3
|
+
module ClassMethods
|
4
|
+
def token_resource
|
5
|
+
has_one :tokenized_permission, :as => :permissable
|
6
|
+
delegate :token, :to => :tokenized_permission, :allow_nil => true
|
7
|
+
after_create :create_token
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module InstanceMethods
|
12
|
+
def create_token
|
13
|
+
create_tokenized_permission(:token => ActiveSupport::SecureRandom::hex(8))
|
14
|
+
token
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.included(receiver)
|
19
|
+
receiver.extend ClassMethods
|
20
|
+
receiver.send :include, InstanceMethods
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
data/lib/spree_auth.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spree_core'
|
2
|
-
require '
|
2
|
+
require 'devise'
|
3
3
|
require 'cancan'
|
4
4
|
|
5
|
-
require 'spree/auth_user'
|
6
5
|
require 'spree/auth/config'
|
6
|
+
require 'spree/token_resource'
|
7
7
|
|
8
8
|
module SpreeAuth
|
9
9
|
class Engine < Rails::Engine
|
@@ -11,7 +11,18 @@ module SpreeAuth
|
|
11
11
|
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
|
12
12
|
Rails.env.production? ? require(c) : load(c)
|
13
13
|
end
|
14
|
+
|
15
|
+
# monkey patch until new version of devise comes out
|
16
|
+
# https://github.com/plataformatec/devise/commit/ec5bfe9119d0e1e633629793b0de1f58f89622dc
|
17
|
+
Devise::IndifferentHash.class_eval do
|
18
|
+
def [](key)
|
19
|
+
super(convert_key(key))
|
20
|
+
end
|
21
|
+
def to_hash; Hash.new.update(self) end
|
22
|
+
end
|
14
23
|
end
|
24
|
+
|
15
25
|
config.to_prepare &method(:activate).to_proc
|
26
|
+
ActiveRecord::Base.class_eval { include Spree::TokenResource }
|
16
27
|
end
|
17
28
|
end
|
data/lib/tasks/install.rake
CHANGED
@@ -11,7 +11,6 @@ namespace :spree_auth do
|
|
11
11
|
task :migrations do
|
12
12
|
source = File.join(File.dirname(__FILE__), '..', '..', 'db')
|
13
13
|
destination = File.join(Rails.root, 'db')
|
14
|
-
puts "INFO: Mirroring assets from #{source} to #{destination}"
|
15
14
|
Spree::FileUtilz.mirror_files(source, destination)
|
16
15
|
end
|
17
16
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_auth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 191
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 40
|
9
|
+
- 0
|
10
|
+
version: 0.40.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sean Schofield
|
@@ -15,7 +15,8 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2010-12-22 00:00:00 -05:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: spree_core
|
@@ -25,28 +26,28 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - "="
|
27
28
|
- !ruby/object:Gem::Version
|
28
|
-
hash:
|
29
|
+
hash: 191
|
29
30
|
segments:
|
30
31
|
- 0
|
31
|
-
-
|
32
|
-
-
|
33
|
-
version: 0.
|
32
|
+
- 40
|
33
|
+
- 0
|
34
|
+
version: 0.40.0
|
34
35
|
type: :runtime
|
35
36
|
version_requirements: *id001
|
36
37
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
+
name: devise
|
38
39
|
prerelease: false
|
39
40
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
41
|
none: false
|
41
42
|
requirements:
|
42
43
|
- - "="
|
43
44
|
- !ruby/object:Gem::Version
|
44
|
-
hash:
|
45
|
+
hash: 7712074
|
45
46
|
segments:
|
46
|
-
- 2
|
47
47
|
- 1
|
48
|
-
-
|
49
|
-
|
48
|
+
- 2
|
49
|
+
- rc
|
50
|
+
version: 1.2.rc
|
50
51
|
type: :runtime
|
51
52
|
version_requirements: *id002
|
52
53
|
- !ruby/object:Gem::Dependency
|
@@ -81,36 +82,47 @@ files:
|
|
81
82
|
- app/controllers/orders_controller_decorator.rb
|
82
83
|
- app/controllers/resource_controller_decorator.rb
|
83
84
|
- app/controllers/spree/base_controller_decorator.rb
|
85
|
+
- app/controllers/user_password_resets_controller.rb
|
86
|
+
- app/controllers/user_registrations_controller.rb
|
84
87
|
- app/controllers/user_sessions_controller.rb
|
85
88
|
- app/controllers/users_controller.rb
|
89
|
+
- app/helpers/users_helper.rb
|
86
90
|
- app/models/ability.rb
|
87
91
|
- app/models/order_decorator.rb
|
88
92
|
- app/models/spree_auth_configuration.rb
|
89
93
|
- app/models/spree_current_order_decorator.rb
|
94
|
+
- app/models/tokenized_permission.rb
|
90
95
|
- app/models/user.rb
|
91
96
|
- app/models/user_mailer.rb
|
92
|
-
- app/models/user_session.rb
|
93
97
|
- app/views/checkout/registration.html.erb
|
94
|
-
- app/views/password_resets/edit.html.erb
|
95
|
-
- app/views/password_resets/new.html.erb
|
96
98
|
- app/views/shared/_error_messages.html.erb
|
97
99
|
- app/views/shared/_flashes.html.erb
|
100
|
+
- app/views/shared/_login.html.erb
|
98
101
|
- app/views/shared/_login_bar.html.erb
|
102
|
+
- app/views/shared/_user_form.html.erb
|
99
103
|
- app/views/shared/unauthorized.html.erb
|
100
|
-
- app/views/user_mailer/
|
104
|
+
- app/views/user_mailer/reset_password_instructions.text.erb
|
105
|
+
- app/views/user_password_resets/edit.html.erb
|
106
|
+
- app/views/user_password_resets/new.html.erb
|
107
|
+
- app/views/user_registrations/new.html.erb
|
101
108
|
- app/views/user_sessions/authorization_failure.html.erb
|
102
109
|
- app/views/user_sessions/new.html.erb
|
103
110
|
- app/views/users/edit.html.erb
|
104
|
-
- app/views/users/new.html.erb
|
105
111
|
- app/views/users/show.html.erb
|
112
|
+
- config/initializers/devise.rb
|
113
|
+
- config/locales/en.yml
|
106
114
|
- config/routes.rb
|
107
|
-
- lib/cancan/controller_additions.rb
|
108
115
|
- lib/spree/auth/config.rb
|
109
|
-
- lib/spree/
|
116
|
+
- lib/spree/token_resource.rb
|
110
117
|
- lib/spree_auth.rb
|
111
118
|
- lib/tasks/auth.rake
|
112
119
|
- lib/tasks/install.rake
|
120
|
+
- db/migrate/20101101185116_rename_columns_for_devise.rb
|
121
|
+
- db/migrate/20101214150824_convert_user_remember_field.rb
|
122
|
+
- db/migrate/20101217012656_create_tokenized_permissions.rb
|
123
|
+
- db/migrate/20101219201531_tokens_for_legacy_orders.rb
|
113
124
|
- db/sample/users.rb
|
125
|
+
has_rdoc: true
|
114
126
|
homepage: http://spreecommerce.com
|
115
127
|
licenses: []
|
116
128
|
|
@@ -142,7 +154,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
154
|
requirements:
|
143
155
|
- none
|
144
156
|
rubyforge_project: spree_auth
|
145
|
-
rubygems_version: 1.
|
157
|
+
rubygems_version: 1.3.7
|
146
158
|
signing_key:
|
147
159
|
specification_version: 3
|
148
160
|
summary: Provides authentication and authorization services for use with Spree.
|
data/app/models/user_session.rb
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
<h1><%= t(:change_my_password) %></h1>
|
2
|
-
|
3
|
-
<%= form_for @user, :url => password_reset_path, :method => :put do |f| %>
|
4
|
-
<%= f.error_messages %>
|
5
|
-
<%= f.label :password %><br />
|
6
|
-
<%= f.password_field :password %><br />
|
7
|
-
<br />
|
8
|
-
<%= f.label :password_confirmation %><br />
|
9
|
-
<%= f.password_field :password_confirmation %><br />
|
10
|
-
<br />
|
11
|
-
<%= f.submit t("update_password") %>
|
12
|
-
<% end %>
|
@@ -1,60 +0,0 @@
|
|
1
|
-
# Overrides the default current_ability method used by Cancan so that we can use the guest_token in addition to current_user.
|
2
|
-
# We were having problems layering the custom logic on top of ActionController::Base in certain situations but overriding
|
3
|
-
# this file within spree_auth seems to do the trick. Documentation has been stripped (see cancan for the original docs.)
|
4
|
-
# Only the current_ability method has been changed.
|
5
|
-
|
6
|
-
module CanCan
|
7
|
-
|
8
|
-
module ControllerAdditions
|
9
|
-
module ClassMethods
|
10
|
-
|
11
|
-
def load_and_authorize_resource(*args)
|
12
|
-
ControllerResource.add_before_filter(self, :load_and_authorize_resource, *args)
|
13
|
-
end
|
14
|
-
|
15
|
-
def load_resource(*args)
|
16
|
-
ControllerResource.add_before_filter(self, :load_resource, *args)
|
17
|
-
end
|
18
|
-
|
19
|
-
def authorize_resource(*args)
|
20
|
-
ControllerResource.add_before_filter(self, :authorize_resource, *args)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.included(base)
|
25
|
-
base.extend ClassMethods
|
26
|
-
base.helper_method :can?, :cannot?
|
27
|
-
end
|
28
|
-
|
29
|
-
def authorize!(action, subject, *args)
|
30
|
-
message = nil
|
31
|
-
if args.last.kind_of?(Hash) && args.last.has_key?(:message)
|
32
|
-
message = args.pop[:message]
|
33
|
-
end
|
34
|
-
raise AccessDenied.new(message, action, subject) if cannot?(action, subject, *args)
|
35
|
-
end
|
36
|
-
|
37
|
-
def unauthorized!(message = nil)
|
38
|
-
raise ImplementationRemoved, "The unauthorized! method has been removed from CanCan, use authorize! instead."
|
39
|
-
end
|
40
|
-
|
41
|
-
def current_ability
|
42
|
-
# HACKED to use Spree's auth_user instead of current_user
|
43
|
-
@current_ability ||= ::Ability.new(auth_user)
|
44
|
-
end
|
45
|
-
|
46
|
-
def can?(*args)
|
47
|
-
current_ability.can?(*args)
|
48
|
-
end
|
49
|
-
|
50
|
-
def cannot?(*args)
|
51
|
-
current_ability.cannot?(*args)
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
if defined? ActionController
|
57
|
-
ActionController::Base.class_eval do
|
58
|
-
include CanCan::ControllerAdditions
|
59
|
-
end
|
60
|
-
end
|
data/lib/spree/auth_user.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module Spree
|
2
|
-
module AuthUser
|
3
|
-
|
4
|
-
# Gives controllers the ability to learn the +auth_user+ as opposed to limiting them to just the standard
|
5
|
-
# +current_user.+ The +auth_user+ method will return the user corresponding to the +guest_token+ if present,
|
6
|
-
# otherwise it will return the +current_user.+ This allows us to check authorization against a guest user
|
7
|
-
# without requiring that user to be signed in. This means the guest can later sign up for
|
8
|
-
# an acccount (or log in to an existing account.)
|
9
|
-
def auth_user
|
10
|
-
return current_user if current_user
|
11
|
-
return nil if session[:guest_token].blank?
|
12
|
-
User.find_by_persistence_token(session[:guest_token])
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|