spree_auth 0.70.7 → 1.0.0.rc1

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.

Files changed (74) hide show
  1. data/LICENSE +2 -2
  2. data/README.md +0 -4
  3. data/app/controllers/resource_controller_decorator.rb +13 -13
  4. data/app/controllers/spree/admin/admin_controller_decorator.rb +19 -0
  5. data/app/controllers/spree/admin/admin_orders_controller_decorator.rb +14 -0
  6. data/app/controllers/spree/admin/admin_resource_controller_decorator.rb +3 -0
  7. data/app/controllers/spree/base_controller_decorator.rb +33 -32
  8. data/app/controllers/spree/checkout_controller_decorator.rb +41 -0
  9. data/app/controllers/spree/orders_controller_decorator.rb +15 -0
  10. data/app/controllers/{user_passwords_controller.rb → spree/user_passwords_controller.rb} +13 -14
  11. data/app/controllers/{user_registrations_controller.rb → spree/user_registrations_controller.rb} +11 -13
  12. data/app/controllers/{user_sessions_controller.rb → spree/user_sessions_controller.rb} +15 -17
  13. data/app/controllers/{users_controller.rb → spree/users_controller.rb} +8 -12
  14. data/app/helpers/spree/users_helper.rb +15 -0
  15. data/app/mailers/spree/user_mailer.rb +10 -0
  16. data/app/models/spree/ability.rb +65 -0
  17. data/app/models/spree/auth_configuration.rb +6 -0
  18. data/app/models/{spree_current_order_decorator.rb → spree/current_order_decorator.rb} +1 -3
  19. data/app/models/{order_decorator.rb → spree/order_decorator.rb} +1 -1
  20. data/app/models/spree/tokenized_permission.rb +5 -0
  21. data/app/models/spree/user.rb +87 -0
  22. data/app/overrides/auth_admin_login_navigation_bar.rb +2 -2
  23. data/app/overrides/auth_shared_login_bar.rb +2 -2
  24. data/app/views/spree/checkout/registration.html.erb +20 -0
  25. data/app/views/spree/layouts/admin/_login_nav.html.erb +8 -0
  26. data/app/views/{shared → spree/shared}/_flashes.html.erb +0 -0
  27. data/app/views/{shared → spree/shared}/_login.html.erb +3 -3
  28. data/app/views/spree/shared/_login_bar.html.erb +6 -0
  29. data/app/views/{shared → spree/shared}/_user_form.html.erb +1 -1
  30. data/app/views/{shared → spree/shared}/unauthorized.html.erb +0 -0
  31. data/app/views/{user_mailer → spree/user_mailer}/reset_password_instructions.text.erb +0 -0
  32. data/app/views/spree/user_passwords/edit.html.erb +15 -0
  33. data/app/views/spree/user_passwords/new.html.erb +13 -0
  34. data/app/views/spree/user_registrations/new.html.erb +22 -0
  35. data/app/views/{user_sessions → spree/user_sessions}/authorization_failure.html.erb +0 -0
  36. data/app/views/{user_sessions → spree/user_sessions}/new.html.erb +2 -2
  37. data/app/views/spree/users/edit.html.erb +11 -0
  38. data/app/views/{users → spree/users}/show.html.erb +2 -2
  39. data/config/initializers/devise.rb +6 -6
  40. data/config/locales/en.yml +5 -5
  41. data/config/routes.rb +12 -9
  42. data/db/default/users.rb +22 -12
  43. data/db/migrate/20101026184950_rename_columns_for_devise.rb +33 -33
  44. data/db/migrate/20101214150824_convert_user_remember_field.rb +7 -7
  45. data/db/migrate/20101217012656_create_tokenized_permissions.rb +3 -8
  46. data/db/migrate/20101219201531_tokens_for_legacy_orders.rb +7 -3
  47. data/db/migrate/20111007143030_namespace_tokenized_permission.rb +5 -0
  48. data/db/migrate/20111206075712_migrate_tokenized_permissions.rb +24 -0
  49. data/db/seeds.rb +1 -1
  50. data/lib/spree/auth/engine.rb +25 -0
  51. data/lib/spree/auth.rb +15 -0
  52. data/lib/spree/token_resource.rb +17 -17
  53. data/lib/spree_auth.rb +1 -24
  54. metadata +63 -55
  55. data/app/controllers/admin_controller_decorator.rb +0 -13
  56. data/app/controllers/admin_orders_controller_decorator.rb +0 -15
  57. data/app/controllers/admin_resource_controller_decorator.rb +0 -3
  58. data/app/controllers/checkout_controller_decorator.rb +0 -42
  59. data/app/controllers/orders_controller_decorator.rb +0 -17
  60. data/app/helpers/users_helper.rb +0 -13
  61. data/app/models/ability.rb +0 -64
  62. data/app/models/spree_auth_configuration.rb +0 -4
  63. data/app/models/tokenized_permission.rb +0 -3
  64. data/app/models/user.rb +0 -85
  65. data/app/models/user_mailer.rb +0 -13
  66. data/app/views/checkout/registration.html.erb +0 -20
  67. data/app/views/layouts/admin/_login_nav.html.erb +0 -8
  68. data/app/views/shared/_login_bar.html.erb +0 -6
  69. data/app/views/user_passwords/edit.html.erb +0 -15
  70. data/app/views/user_passwords/new.html.erb +0 -13
  71. data/app/views/user_registrations/new.html.erb +0 -22
  72. data/app/views/users/edit.html.erb +0 -11
  73. data/config/cucumber.yml +0 -10
  74. data/lib/spree/auth/config.rb +0 -22
@@ -0,0 +1,20 @@
1
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
2
+ <h2><%= t(:registration) %></h2>
3
+ <div id="registration">
4
+ <div id="account">
5
+ <%= render :file => 'spree/user_sessions/new' %>
6
+ </div>
7
+ <% if Spree::Config[:allow_guest_checkout] %>
8
+ <div id="guest_checkout">
9
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @order } %>
10
+ <h2><%= t(:guest_user_account) %></h2>
11
+ <%= form_for @order, :url => spree.update_checkout_registration_path, :html => { :method => :put, :id => 'checkout_form_registration'} do |f| %>
12
+ <p>
13
+ <%= f.label :email, t(:email) %><br />
14
+ <%= f.email_field :email, :class => 'title' %>
15
+ </p>
16
+ <p><%= f.submit t(:continue), :class => 'button primary' %></p>
17
+ <% end %>
18
+ </div>
19
+ <% end %>
20
+ </div>
@@ -0,0 +1,8 @@
1
+ <% if current_user %>
2
+ <ul id="login-nav">
3
+ <li><%= t(:logged_in_as) %>: <%= current_user.email %></li>
4
+ <li><%= link_to t(:account), spree.edit_user_path(current_user) %></li>
5
+ <li><%= link_to t(:logout), spree.destroy_user_session_path %></li>
6
+ <li><%= link_to t(:store), spree.products_path %></li>
7
+ </ul>
8
+ <% end %>
@@ -1,8 +1,8 @@
1
- <%= form_for :user, :url => user_session_path do |f| %>
1
+ <%= form_for :user, :url => spree.user_session_path do |f| %>
2
2
  <div id="password-credentials">
3
3
  <p>
4
4
  <%= f.label :email, t(:email) %><br />
5
- <%= f.text_field :email, :class => 'title' %>
5
+ <%= f.email_field :email, :class => 'title' %>
6
6
  </p>
7
7
  <p>
8
8
  <%= f.label :password, t(:password) %><br />
@@ -16,5 +16,5 @@
16
16
  </label>
17
17
  </p>
18
18
 
19
- <p><%= f.submit t(:log_in), :class => 'button primary'%></p>
19
+ <p><%= f.submit t(:log_in), :class => 'button primary' %></p>
20
20
  <% end %>
@@ -0,0 +1,6 @@
1
+ <% if current_user %>
2
+ <li><%= link_to t(:my_account), spree.account_path %></li>
3
+ <li><%= link_to t(:logout), spree.destroy_user_session_path %></li>
4
+ <% else %>
5
+ <li><%= link_to t(:log_in), spree.login_path %></li>
6
+ <% end %>
@@ -1,6 +1,6 @@
1
1
  <p>
2
2
  <%= f.label :email, t(:email) %><br />
3
- <%= f.text_field :email, :class => 'title' %>
3
+ <%= f.email_field :email, :class => 'title' %>
4
4
  </p>
5
5
  <div id="password-credentials">
6
6
  <p>
@@ -0,0 +1,15 @@
1
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
2
+ <h2><%= t(:change_my_password) %></h2>
3
+
4
+ <%= form_for @user, :url => spree.user_password_path, :html => {:method => :put} do |f| %>
5
+ <p>
6
+ <%= f.label :password %><br />
7
+ <%= f.password_field :password %><br />
8
+ </p>
9
+ <p>
10
+ <%= f.label :password_confirmation %><br />
11
+ <%= f.password_field :password_confirmation %><br />
12
+ </p>
13
+ <%= f.hidden_field :reset_password_token %>
14
+ <%= f.submit t(:update_password), :class => 'button primary' %>
15
+ <% end %>
@@ -0,0 +1,13 @@
1
+ <h2><%= t(:forgot_password) %></h2>
2
+
3
+ <p><%= t(:instructions_to_reset_password) %></p>
4
+
5
+ <%= form_for Spree::User.new, :as => :user, :url => spree.user_password_path do |f| %>
6
+ <p>
7
+ <%= f.label :email, t(:email) %>:<br />
8
+ <%= f.email_field :email %>
9
+ </p>
10
+ <p>
11
+ <%= f.submit t(:reset_password), :class => 'button primary' %>
12
+ </p>
13
+ <% end %>
@@ -0,0 +1,22 @@
1
+ <% @body_id = 'signup' %>
2
+
3
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
4
+
5
+ <div id="new-customer">
6
+ <h2><%= t(:new_customer) %></h2>
7
+
8
+ <div data-hook="signup">
9
+
10
+ <%= form_for :user, :url => spree.user_registration_path(@user) do |f| %>
11
+ <div data-hook="signup_inside_form"%>
12
+ <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>
13
+ <p><%= f.submit t(:create), :class => 'button primary' %></p>
14
+ </div>
15
+ <% end %>
16
+ <%= t(:or) %> <%= link_to t(:login_as_existing), spree.login_path %>
17
+
18
+ </div>
19
+
20
+ </div>
21
+
22
+ <div data-hook="login_extras"></div>
@@ -6,8 +6,8 @@
6
6
  <div id="existing-customer">
7
7
  <h2><%= t(:login_as_existing) %></h2>
8
8
  <div data-hook="login">
9
- <%= render :partial => 'shared/login' %>
10
- <%= t(:or) %> <%= link_to t(:create_a_new_account), signup_path %> | <%= link_to t(:forgot_password), new_user_password_path %>
9
+ <%= render :partial => 'spree/shared/login' %>
10
+ <%= t(:or) %> <%= link_to t(:create_a_new_account), spree.signup_path %> | <%= link_to t(:forgot_password), spree.new_user_password_path %>
11
11
  </div>
12
12
  </div>
13
13
  <div data-hook="login_extras"></div>
@@ -0,0 +1,11 @@
1
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @user } %>
2
+
3
+ <h2><%= t(:editing_user) %></h2>
4
+
5
+ <%= form_for @user, :url => spree.user_path(@user), :html => { :method => :put } do |f| %>
6
+ <%= render :partial => 'spree/shared/user_form', :locals => { :f => f } %>
7
+ <p>
8
+ <%= f.submit t(:update) %>
9
+ </p>
10
+ <% end %>
11
+
@@ -1,11 +1,11 @@
1
- <h1><%= t(:my_account) %></h1>
1
+ <h1><%= accurate_title %></h1>
2
2
 
3
3
  <div data-hook="account_summary">
4
4
  <dl id="user-info">
5
5
  <dt><%= t(:email) %></dt>
6
6
  <dd><%= @user.email %></dd>
7
7
  </dl>
8
- <p><%= link_to t(:edit), edit_account_path %></p>
8
+ <p><%= link_to t(:edit), spree.edit_account_path %></p>
9
9
  </div>
10
10
 
11
11
  <div data-hook="account_my_orders">
@@ -3,10 +3,10 @@
3
3
  Devise.setup do |config|
4
4
  # ==> Mailer Configuration
5
5
  # Configure the e-mail address which will be shown in DeviseMailer.
6
- config.mailer_sender = "please-change-me@config-initializers-devise.com"
6
+ config.mailer_sender = 'please-change-me@config-initializers-devise.com'
7
7
 
8
8
  # Configure the class responsible to send e-mails.
9
- config.mailer = "UserMailer"
9
+ config.mailer = 'Spree::UserMailer'
10
10
 
11
11
  # ==> ORM configuration
12
12
  # Load and configure the ORM. Supports :active_record (default) and
@@ -32,7 +32,7 @@ Devise.setup do |config|
32
32
  #config.http_authenticatable_on_xhr = false
33
33
 
34
34
  # The realm used in Http Basic Authentication
35
- config.http_authentication_realm = "Spree Application"
35
+ config.http_authentication_realm = 'Spree Application'
36
36
 
37
37
  # ==> Configuration for :database_authenticatable
38
38
  # For bcrypt, this is the cost for hashing the password and defaults to 10. If
@@ -40,7 +40,7 @@ Devise.setup do |config|
40
40
  config.stretches = 20
41
41
 
42
42
  # Setup a pepper to generate the encrypted password.
43
- config.pepper = "0bfa9e2cb4a5efd0d976518a3d82e345060547913d2fd1dd2f32b0c8dbbbb5d3dc20b86d0fed31aca9513bccdf51643700ea277d9c64d9ce8ef886bf39293453"
43
+ config.pepper = '0bfa9e2cb4a5efd0d976518a3d82e345060547913d2fd1dd2f32b0c8dbbbb5d3dc20b86d0fed31aca9513bccdf51643700ea277d9c64d9ce8ef886bf39293453'
44
44
 
45
45
  # ==> Configuration for :confirmable
46
46
  # The time you want to give your user to confirm his account. During this time
@@ -98,8 +98,8 @@ Devise.setup do |config|
98
98
  config.token_authentication_key = :auth_token
99
99
 
100
100
  # ==> Scopes configuration
101
- # Turn scoped views on. Before rendering "sessions/new", it will first check for
102
- # "users/sessions/new". It's turned off by default because it's slower if you
101
+ # Turn scoped views on. Before rendering 'sessions/new', it will first check for
102
+ # 'users/sessions/new'. It's turned off by default because it's slower if you
103
103
  # are using only default views.
104
104
  # config.scoped_views = true
105
105
 
@@ -1,12 +1,12 @@
1
1
  en:
2
2
  errors:
3
3
  messages:
4
- not_found: "not found"
5
- already_confirmed: "was already confirmed"
6
- not_locked: "was not locked"
4
+ not_found: 'not found'
5
+ already_confirmed: 'was already confirmed'
6
+ not_locked: 'was not locked'
7
7
  not_saved:
8
- one: "1 error prohibited this %{resource} from being saved:"
9
- other: "%{count} errors prohibited this %{resource} from being saved:"
8
+ one: '1 error prohibited this %{resource} from being saved:'
9
+ other: '%{count} errors prohibited this %{resource} from being saved:'
10
10
  devise:
11
11
  failure:
12
12
  unauthenticated: 'You need to sign in or sign up before continuing.'
data/config/routes.rb CHANGED
@@ -1,18 +1,21 @@
1
- Rails.application.routes.draw do
1
+ Spree::Core::Engine.routes.draw do
2
2
  devise_for :user,
3
- :controllers => { :sessions => 'user_sessions',
4
- :registrations => 'user_registrations',
5
- :passwords => "user_passwords" },
3
+ :class_name => 'Spree::User',
4
+ :controllers => { :sessions => 'spree/user_sessions',
5
+ :registrations => 'spree/user_registrations',
6
+ :passwords => 'spree/user_passwords' },
6
7
  :skip => [:unlocks, :omniauth_callbacks],
7
- :path_names => { :sign_out => 'logout'}
8
+ :path_names => { :sign_out => 'logout' }
9
+ end
10
+
11
+ Spree::Core::Engine.routes.prepend do
8
12
  resources :users, :only => [:edit, :update]
9
13
 
10
14
  devise_scope :user do
11
- get "/login" => "user_sessions#new", :as => :login
12
- get "/signup" => "user_registrations#new", :as => :signup
15
+ get '/login' => 'user_sessions#new', :as => :login
16
+ get '/signup' => 'user_registrations#new', :as => :signup
13
17
  end
14
18
 
15
-
16
19
  match '/checkout/registration' => 'checkout#registration', :via => :get, :as => :checkout_registration
17
20
  match '/checkout/registration' => 'checkout#update_registration', :via => :put, :as => :update_checkout_registration
18
21
 
@@ -23,6 +26,6 @@ Rails.application.routes.draw do
23
26
  get :nav_bar
24
27
  end
25
28
  end
26
- resource :account, :controller => "users"
27
29
 
30
+ resource :account, :controller => 'users'
28
31
  end
data/db/default/users.rb CHANGED
@@ -1,12 +1,14 @@
1
+ require 'highline/import'
2
+
1
3
  # see last line where we create an admin if there is none, asking for email and password
2
4
  def prompt_for_admin_password
3
5
  password = ask('Password [spree123]: ', String) do |q|
4
6
  q.echo = false
5
7
  q.validate = /^(|.{5,40})$/
6
- q.responses[:not_valid] = "Invalid password. Must be at least 5 characters long."
8
+ q.responses[:not_valid] = 'Invalid password. Must be at least 5 characters long.'
7
9
  q.whitespace = :strip
8
10
  end
9
- password = "spree123" if password.blank?
11
+ password = 'spree123' if password.blank?
10
12
  password
11
13
  end
12
14
 
@@ -15,17 +17,16 @@ def prompt_for_admin_email
15
17
  q.echo = true
16
18
  q.whitespace = :strip
17
19
  end
18
- email = "spree@example.com" if email.blank?
20
+ email = 'spree@example.com' if email.blank?
19
21
  email
20
22
  end
21
23
 
22
24
  def create_admin_user
23
25
  if ENV['AUTO_ACCEPT']
24
- password = "spree123"
25
- email = "spree@example.com"
26
+ password = 'spree123'
27
+ email = 'spree@example.com'
26
28
  else
27
- require 'highline/import'
28
- puts "Create the admin user (press enter for defaults)."
29
+ puts 'Create the admin user (press enter for defaults).'
29
30
  #name = prompt_for_admin_name unless name
30
31
  email = prompt_for_admin_email
31
32
  password = prompt_for_admin_password
@@ -37,19 +38,28 @@ def create_admin_user
37
38
  :login => email
38
39
  }
39
40
 
40
- load 'user.rb'
41
+ load 'spree/user.rb'
41
42
 
42
- if User.find_by_email(email)
43
+ if Spree::User.find_by_email(email)
43
44
  say "\nWARNING: There is already a user with the email: #{email}, so no account changes were made. If you wish to create an additional admin user, please run rake db:admin:create again with a different email.\n\n"
44
45
  else
45
- admin = User.create(attributes)
46
+ admin = Spree::User.create(attributes)
46
47
  # create an admin role and and assign the admin user to that role
47
- role = Role.find_or_create_by_name "admin"
48
+ role = Spree::Role.find_or_create_by_name 'admin'
48
49
  admin.roles << role
49
50
  admin.save
50
51
  end
51
52
  end
52
53
 
53
54
  if Rails.env.development?
54
- create_admin_user if User.where("roles.name" => 'admin').includes(:roles).empty?
55
+ if Spree::User.admin.empty?
56
+ create_admin_user
57
+ else
58
+ puts 'Admin user has already been previously created.'
59
+ if agree('Would you like to create a new admin user? (yes/no)')
60
+ create_admin_user
61
+ else
62
+ puts 'No admin user created.'
63
+ end
64
+ end
55
65
  end
@@ -1,39 +1,39 @@
1
1
  class RenameColumnsForDevise < ActiveRecord::Migration
2
- def self.up
3
- return if column_exists?(:users, :password_salt)
4
- rename_column :users, :crypted_password, :encrypted_password
5
- rename_column :users, :salt, :password_salt
6
- rename_column :users, :remember_token_expires_at, :remember_created_at
7
- rename_column :users, :login_count, :sign_in_count
8
- rename_column :users, :failed_login_count, :failed_attempts
9
- rename_column :users, :single_access_token, :reset_password_token
10
- rename_column :users, :current_login_at, :current_sign_in_at
11
- rename_column :users, :last_login_at, :last_sign_in_at
12
- rename_column :users, :current_login_ip, :current_sign_in_ip
13
- rename_column :users, :last_login_ip, :last_sign_in_ip
14
- add_column :users, :authentication_token, :string
15
- add_column :users, :unlock_token, :string
16
- add_column :users, :locked_at, :datetime
17
- remove_column :users, :api_key if column_exists?(:users, :api_key)
18
- remove_column :users, :openid_identifier
2
+ def up
3
+ return if column_exists?(:spree_users, :password_salt)
4
+ rename_column :spree_users, :crypted_password, :encrypted_password
5
+ rename_column :spree_users, :salt, :password_salt
6
+ rename_column :spree_users, :remember_token_expires_at, :remember_created_at
7
+ rename_column :spree_users, :login_count, :sign_in_count
8
+ rename_column :spree_users, :failed_login_count, :failed_attempts
9
+ rename_column :spree_users, :single_access_token, :reset_password_token
10
+ rename_column :spree_users, :current_login_at, :current_sign_in_at
11
+ rename_column :spree_users, :last_login_at, :last_sign_in_at
12
+ rename_column :spree_users, :current_login_ip, :current_sign_in_ip
13
+ rename_column :spree_users, :last_login_ip, :last_sign_in_ip
14
+ add_column :spree_users, :authentication_token, :string
15
+ add_column :spree_users, :unlock_token, :string
16
+ add_column :spree_users, :locked_at, :datetime
17
+ remove_column :spree_users, :api_key if column_exists?(:spree_users, :api_key)
18
+ remove_column :spree_users, :openid_identifier
19
19
  end
20
20
 
21
- def self.down
22
- remove_column :users, :authentication_token
23
- remove_column :users, :locked_at
24
- remove_column :users, :unlock_token
21
+ def down
22
+ remove_column :spree_users, :authentication_token
23
+ remove_column :spree_users, :locked_at
24
+ remove_column :spree_users, :unlock_token
25
25
  rename_column :table_name, :new_column_name, :column_name
26
- rename_column :users, :last_sign_in_ip, :last_login_ip
27
- rename_column :users, :current_sign_in_ip, :current_login_ip
28
- rename_column :users, :last_sign_in_at, :last_login_at
29
- rename_column :users, :current_sign_in_at, :current_login_at
30
- rename_column :users, :reset_password_token, :single_access_token
31
- rename_column :users, :failed_attempts, :failed_login_count
32
- rename_column :users, :sign_in_count, :login_count
33
- rename_column :users, :remember_created_at, :remember_token_expires_at
34
- rename_column :users, :password_salt, :salt
35
- rename_column :users, :encrypted_password, :crypted_password
36
- add_column :users, :unlock_token, :string
37
- add_column :users, :openid_identifier, :string
26
+ rename_column :spree_users, :last_sign_in_ip, :last_login_ip
27
+ rename_column :spree_users, :current_sign_in_ip, :current_login_ip
28
+ rename_column :spree_users, :last_sign_in_at, :last_login_at
29
+ rename_column :spree_users, :current_sign_in_at, :current_login_at
30
+ rename_column :spree_users, :reset_password_token, :single_access_token
31
+ rename_column :spree_users, :failed_attempts, :failed_login_count
32
+ rename_column :spree_users, :sign_in_count, :login_count
33
+ rename_column :spree_users, :remember_created_at, :remember_token_expires_at
34
+ rename_column :spree_users, :password_salt, :salt
35
+ rename_column :spree_users, :encrypted_password, :crypted_password
36
+ add_column :spree_users, :unlock_token, :string
37
+ add_column :spree_users, :openid_identifier, :string
38
38
  end
39
39
  end
@@ -1,11 +1,11 @@
1
1
  class ConvertUserRememberField < ActiveRecord::Migration
2
- def self.up
3
- remove_column :users, :remember_created_at
4
- add_column :users, :remember_created_at, :datetime
2
+ def up
3
+ remove_column :spree_users, :remember_created_at
4
+ add_column :spree_users, :remember_created_at, :datetime
5
5
  end
6
6
 
7
- def self.down
8
- remove_column :users, :remember_created_at
9
- add_column :users, :remember_created_at, :string
7
+ def down
8
+ remove_column :spree_users, :remember_created_at
9
+ add_column :spree_users, :remember_created_at, :string
10
10
  end
11
- end
11
+ end
@@ -1,18 +1,13 @@
1
1
  class CreateTokenizedPermissions < ActiveRecord::Migration
2
-
3
- def self.up
4
-
2
+ def change
5
3
  create_table :tokenized_permissions do |t|
6
4
  t.integer :permissable_id
7
5
  t.string :permissable_type
8
6
  t.string :token
7
+
9
8
  t.timestamps
10
9
  end
11
10
 
12
- add_index "tokenized_permissions", ["permissable_id", "permissable_type"], :name => "index_tokenized_name_and_type"
13
- end
14
-
15
- def self.down
16
- drop_table :tokenized_permissions
11
+ add_index :tokenized_permissions, [:permissable_id, :permissable_type], :name => 'index_tokenized_name_and_type'
17
12
  end
18
13
  end
@@ -1,12 +1,16 @@
1
1
  class TokensForLegacyOrders < ActiveRecord::Migration
2
- def self.up
2
+ def up
3
+ Spree::TokenizedPermission.table_name = 'tokenized_permissions'
4
+
3
5
  # add token permissions for legacy orders (stop relying on user persistence token)
4
- Order.all.each do |order|
6
+ Spree::Order.all.each do |order|
5
7
  next unless order.user
6
8
  order.create_tokenized_permission(:token => order.user.persistence_token)
7
9
  end
10
+
11
+ Spree::TokenizedPermission.table_name = 'spree_tokenized_permissions'
8
12
  end
9
13
 
10
- def self.down
14
+ def down
11
15
  end
12
16
  end
@@ -0,0 +1,5 @@
1
+ class NamespaceTokenizedPermission < ActiveRecord::Migration
2
+ def change
3
+ rename_table :tokenized_permissions, :spree_tokenized_permissions
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+ class MigrateTokenizedPermissions < ActiveRecord::Migration
2
+ def concat(str1, str2)
3
+ dbtype = Rails.configuration.database_configuration[Rails.env]['adapter'].to_sym
4
+
5
+ case dbtype
6
+ when :mysql, :mysql2
7
+ "CONCAT(#{str1}, #{str2})"
8
+ when :sqlserver
9
+ "(#{str1} + #{str2})"
10
+ else
11
+ "(#{str1} || #{str2})"
12
+ end
13
+ end
14
+
15
+ def up
16
+ execute "UPDATE spree_tokenized_permissions SET permissable_type = #{concat("'Spree::'", "permissable_type")}" +
17
+ " WHERE permissable_type NOT LIKE 'Spree::%' AND permissable_type IS NOT NULL"
18
+ end
19
+
20
+ def down
21
+ execute "UPDATE spree_tokenized_permissions SET permissable_type = REPLACE(permissable_type, 'Spree::', '')" +
22
+ " WHERE permissable_type LIKE 'Spree::%'"
23
+ end
24
+ end
data/db/seeds.rb CHANGED
@@ -2,4 +2,4 @@
2
2
  default_path = File.join(File.dirname(__FILE__), 'default')
3
3
 
4
4
  Rake::Task['db:load_dir'].reenable
5
- Rake::Task["db:load_dir"].invoke( default_path )
5
+ Rake::Task['db:load_dir'].invoke(default_path)
@@ -0,0 +1,25 @@
1
+ module Spree
2
+ module Auth
3
+ class Engine < Rails::Engine
4
+ isolate_namespace Spree
5
+ engine_name 'spree_auth'
6
+
7
+ initializer "spree.auth.environment", :before => :load_config_initializers do |app|
8
+ Spree::Auth::Config = Spree::AuthConfiguration.new
9
+ end
10
+
11
+ def self.activate
12
+ Dir.glob(File.join(File.dirname(__FILE__), "../../../app/**/*_decorator*.rb")) do |c|
13
+ Rails.configuration.cache_classes ? require(c) : load(c)
14
+ end
15
+
16
+ Dir.glob(File.join(File.dirname(__FILE__), "../../../app/overrides/*.rb")) do |c|
17
+ Rails.configuration.cache_classes ? require(c) : load(c)
18
+ end
19
+ end
20
+
21
+ config.to_prepare &method(:activate).to_proc
22
+ ActiveRecord::Base.class_eval { include Spree::TokenResource }
23
+ end
24
+ end
25
+ end
data/lib/spree/auth.rb ADDED
@@ -0,0 +1,15 @@
1
+ require 'spree_core'
2
+ require 'devise'
3
+ require 'cancan'
4
+
5
+ require 'spree/token_resource'
6
+
7
+ module Spree
8
+ module Auth
9
+ def self.config(&block)
10
+ yield(Spree::Auth::Config)
11
+ end
12
+ end
13
+ end
14
+
15
+ require 'spree/auth/engine'
@@ -1,23 +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
1
+ module Spree
2
+ module TokenResource
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
8
9
  end
9
- end
10
10
 
11
- module InstanceMethods
12
- def create_token
13
- create_tokenized_permission(:token => ::SecureRandom::hex(8))
14
- token
11
+ module InstanceMethods
12
+ def create_token
13
+ create_tokenized_permission(:token => ::SecureRandom::hex(8))
14
+ token
15
+ end
15
16
  end
16
- end
17
17
 
18
- def self.included(receiver)
19
- receiver.extend ClassMethods
20
- receiver.send :include, InstanceMethods
18
+ def self.included(receiver)
19
+ receiver.extend ClassMethods
20
+ receiver.send :include, InstanceMethods
21
+ end
21
22
  end
22
-
23
23
  end
data/lib/spree_auth.rb CHANGED
@@ -1,24 +1 @@
1
- require 'spree_core'
2
- require 'devise'
3
- require 'cancan'
4
-
5
- require 'spree/auth/config'
6
- require 'spree/token_resource'
7
-
8
- module SpreeAuth
9
- class Engine < Rails::Engine
10
- engine_name 'spree_auth'
11
-
12
- def self.activate
13
- Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
14
- Rails.application.config.cache_classes ? require(c) : load(c)
15
- end
16
- Dir.glob(File.join(File.dirname(__FILE__), "../app/overrides/*.rb")) do |c|
17
- Rails.application.config.cache_classes ? require(c) : load(c)
18
- end
19
- end
20
-
21
- config.to_prepare &method(:activate).to_proc
22
- ActiveRecord::Base.class_eval { include Spree::TokenResource }
23
- end
24
- end
1
+ require 'spree/auth'