devise-guests 0.8.0 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 776fbee405a1074096bd13610d3691a1016244e35aa1b25cd36d437077da6d56
4
- data.tar.gz: 9d61df8e8b059d679d3a614bc6ffacd72d80a50b8568d7ab03a6aabb2e027611
3
+ metadata.gz: 1cf09de56176a4e1572a0d31dedb4c8583483f6b93706ef6b026c9ecbc191eaf
4
+ data.tar.gz: a91ee992b8c0302a08946c7dfa3416f0a53200b909188419cfd11c0fbac415cb
5
5
  SHA512:
6
- metadata.gz: 9194038c18a01eaae39f335533d200e4a36acb054af5ac60f9da912b022714162d3240c4c2943bb0d58c6738a9b9e50253dafc078afc689e5055a2e16b541f67
7
- data.tar.gz: 4538fc330f09a7678e94b3c4aa21619f93e5469cae3a4159a556c17a14f43960108aa10be69f8f42e0b9ff17ad60e9d71b8e8b8308f1d62bae12ab08471c956a
6
+ metadata.gz: 3158f2d0423e1153bcc26e34539ae063f4e81fb6a761ee48f26ee3f428b7d060b6604ac3553ca0e41a949f9655918947ae7b2926f7c6d8e9182554f74d789b08
7
+ data.tar.gz: f792e1da66916f9c29ee2aacf8030fb01614f80c1bc66f0477e398b8a63610ccee2bbcf48618e046e087db0a44ea7590ea75858bed7790b365088a9d10cd96b7
@@ -12,24 +12,55 @@ on:
12
12
  branches: [ master ]
13
13
  pull_request:
14
14
  branches: [ master ]
15
+ types:
16
+ - opened
17
+ - synchronize
18
+ - reopened
19
+ - ready_for_review
20
+ - labeled
21
+ - unlabeled
15
22
 
16
23
  jobs:
24
+ changelog:
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v4
28
+ - id: read-version
29
+ run: |
30
+ echo "::set-output name=VERSION::`cat lib/devise-guests/version.rb | grep -i version | awk '{ print $3 }' | sed -e 's/\"//g'`"
31
+ - uses: dangoslen/changelog-enforcer@v2.3.1
32
+ with:
33
+ skipLabels: 'skip-changelog'
34
+ expectedLatestVersion: ${{ steps.read-version.outputs.VERSION }}
35
+ lint:
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+ - uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1
40
+ with:
41
+ ruby-version: '3.2'
42
+ bundler-cache: true
43
+ cache-version: 1
44
+ - run: bundle exec standardrb
17
45
  test:
18
-
46
+ needs:
47
+ - changelog
48
+ - lint
19
49
  runs-on: ubuntu-latest
20
50
  strategy:
21
51
  matrix:
22
- ruby-version: ['2.6', '2.7', '3.0']
52
+ ruby: ['2.7', '3.0', '3.1', '3.2']
23
53
 
24
54
  steps:
25
- - uses: actions/checkout@v2
55
+ - uses: actions/checkout@v4
26
56
  - name: Set up Ruby
27
57
  # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
58
  # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
59
  # uses: ruby/setup-ruby@v1
30
- uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
60
+ uses: ruby/setup-ruby@ec02537da5712d66d4d50a0f33b7eb52773b5ed1
31
61
  with:
32
- ruby-version: ${{ matrix.ruby-version }}
62
+ ruby-version: ${{ matrix.ruby }}
33
63
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
64
+ cache-version: 1
34
65
  - name: Run tests
35
66
  run: bundle exec rspec
data/CHANGELOG.md ADDED
@@ -0,0 +1,33 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.8.2] - 2023-12-24
8
+ ### Fixed
9
+ - Prevent crashing processes due to loading all guest users in memory during delete_old_guest_users task ([#42](https://github.com/cbeer/devise-guests/pull/42))
10
+
11
+ ### Changed
12
+ - Update README with better detail around data migration ([#49](https://github.com/cbeer/devise-guests/pull/49)) by [@joshmenden](https://github.com/joshmenden)
13
+ - Update supported ruby versions ([#50](https://github.com/cbeer/devise-guests/pull/50)) by [@pacso](https://github.com/pacso)
14
+
15
+ ## [0.8.1] - 2021-10-26
16
+ ### Changed
17
+ - Simplify guest transfer ([#38](https://github.com/cbeer/devise-guests/pull/38))
18
+
19
+ ## [0.8.0] - 2021-10-25
20
+ ### Added
21
+ - Allow setting of custom params on guest model ([#31](https://github.com/cbeer/devise-guests/pull/31)) by [@pacso](https://github.com/pacso)
22
+ - Allow deletion of guest records to optionally be skipped ([#32](https://github.com/cbeer/devise-guests/pull/32)) by [@pacso](https://github.com/pacso)
23
+
24
+ ### Changed
25
+ - Switch to SecureRandom.uuid for guest_user_unique_suffix ([#28](https://github.com/cbeer/devise-guests/pull/28)) by [@notch8](https://github.com/notch8)
26
+ - Update combustion gem ([#29](https://github.com/cbeer/devise-guests/pull/29)) by [@notch8](https://github.com/notch8)
27
+
28
+ ### Fixed
29
+ - Defining the logging_in callback when the controller loads ([#34](https://github.com/cbeer/devise-guests/pull/34)) by [@davidkuz](https://github.com/davidkuz)
30
+
31
+ [Unreleased]: https://github.com/cbeer/devise-guests/compare/v0.8.1...HEAD
32
+ [0.8.1]: https://github.com/cbeer/devise-guests/compare/v0.8.0...v0.8.1
33
+ [0.8.0]: https://github.com/cbeer/devise-guests/compare/v0.7.0...v0.8.0
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # Devise Guests
2
+ [![Gem Version](https://badge.fury.io/rb/devise-guests.svg)](https://badge.fury.io/rb/devise-guests)
2
3
  [![Tests](https://github.com/cbeer/devise-guests/actions/workflows/tests.yml/badge.svg)](https://github.com/cbeer/devise-guests/actions/workflows/tests.yml)
3
4
  [![Ruby Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://github.com/testdouble/standard)
4
5
 
@@ -40,15 +41,12 @@ guest_user # ( for anonymous users)
40
41
 
41
42
  ### Transferring Guest to User on Login
42
43
 
43
- During the login process you may want to transfer things from your guest user to the account the logged into.
44
- To do so, modify your ApplicationController like so:
44
+ During the login process you may want to transfer things from your guest user to the account they logged into.
45
+ To do so, add the following method to your ApplicationController:
45
46
 
46
47
  ```ruby
47
- define_callbacks :logging_in_user
48
- set_callback :logging_in_user, :before, :transfer_guest_to_current_user
49
-
50
48
  private
51
- def transfer_guest_to_current_user
49
+ def transfer_guest_to_user
52
50
  # At this point you have access to:
53
51
  # * current_user - the user they've just logged in as
54
52
  # * guest_user - the guest user they were previously identified by
@@ -60,6 +58,13 @@ def transfer_guest_to_current_user
60
58
  else
61
59
  guest_user.cart.update!(user: current_user)
62
60
  end
61
+
62
+ # In this example we've moved `LineItem` records from the guest
63
+ # user's cart to the logged-in user's cart.
64
+ #
65
+ # To prevent these being deleted when the guest user & cart are
66
+ # destroyed, we need to reload the guest record:
67
+ guest_user.reload
63
68
  end
64
69
  ```
65
70
 
@@ -75,6 +80,26 @@ def guest_user_params
75
80
  end
76
81
  ```
77
82
 
83
+ ### Non-standard authentication keys
84
+
85
+ By default Devise will use `:email` as the authentication key for your model. If for some reason you have modified your
86
+ Devise config to use an alternative attribute (such as `:phone_number`) you will need to provide a method to generate
87
+ the value of this attribute for any guest users which are created.
88
+
89
+ Sticking with the `:phone_number` example, you should define the following method in your `application_controller.rb`:
90
+
91
+ ```ruby
92
+ private
93
+ def guest_phone_number_authentication_key(key)
94
+ key &&= nil unless key.to_s.match(/^guest/)
95
+ key ||= "guest_447" + 9.times.map { SecureRandom.rand(0..9) }.join
96
+ end
97
+ ```
98
+
99
+ Validations are skipped when creating guest users, but if you need to rely on future modifications to the guest record
100
+ passing validations, then you should ensure that this default value for guests is generated in such a way as to be
101
+ valid.
102
+
78
103
  ### Prevent deletion of guest records
79
104
 
80
105
  By default, when signing in from a guest account to an authenticated account, the guest user is destroyed. You have an
@@ -23,7 +23,6 @@ Gem::Specification.new do |s|
23
23
  s.add_development_dependency "yard"
24
24
 
25
25
  s.files = `git ls-files`.split("\n")
26
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
27
26
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
28
27
  s.extra_rdoc_files = [
29
28
  "LICENSE",
@@ -74,6 +74,9 @@ module DeviseGuests::Controllers
74
74
  false
75
75
  end
76
76
 
77
+ def transfer_guest_to_#{mapping}
78
+ end
79
+
77
80
  METHODS
78
81
 
79
82
  ActiveSupport.on_load(:action_controller) do
@@ -81,6 +84,7 @@ module DeviseGuests::Controllers
81
84
  helper_method "guest_#{mapping}", "current_or_guest_#{mapping}"
82
85
  end
83
86
  define_callbacks "logging_in_#{mapping}"
87
+ set_callback :"logging_in_#{mapping}", :"transfer_guest_to_#{mapping}"
84
88
  end
85
89
  end
86
90
  end
@@ -1,3 +1,3 @@
1
1
  module DeviseGuests
2
- VERSION = "0.8.0"
2
+ VERSION = "0.8.2"
3
3
  end
@@ -4,8 +4,10 @@ namespace :devise_guests do
4
4
  # example cron entry to delete users older than 7 days at 2:00 AM every day:
5
5
  # 0 2 * * * cd /path/to/your/app && /path/to/rake devise_guests:delete_old_guest_users[7] RAILS_ENV=your_env
6
6
  desc "Removes entries in the users table for guest users that are older than the number of days given."
7
- task :delete_old_guest_users, [:days_old] => [:environment] do |t, args|
8
- args.with_defaults(days_old: 7)
9
- User.where("guest = ? and updated_at < ?", true, Time.now - args[:days_old].to_i.days).each { |x| x.destroy }
7
+ task :delete_old_guest_users, [:days_old, :batch_size] => [:environment] do |t, args|
8
+ args.with_defaults(days_old: 7, batch_size: 1000)
9
+ User
10
+ .where("guest = ? and updated_at < ?", true, Time.now - args[:days_old].to_i.days)
11
+ .find_each(batch_size: batch_size, &:destroy)
10
12
  end
11
13
  end
@@ -35,6 +35,7 @@ describe ApplicationController, type: :controller do
35
35
  allow(@controller).to receive(:session) { {guest_user_id: 123} }
36
36
 
37
37
  expect(@controller).to receive(:run_callbacks).with(:logging_in_user).and_call_original
38
+ expect(@controller).to receive(:transfer_guest_to_user).and_call_original
38
39
 
39
40
  @controller.current_or_guest_user
40
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-guests
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Beer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-25 00:00:00.000000000 Z
11
+ date: 2023-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: devise
@@ -133,6 +133,7 @@ files:
133
133
  - ".github/workflows/tests.yml"
134
134
  - ".gitignore"
135
135
  - ".standard.yml"
136
+ - CHANGELOG.md
136
137
  - Gemfile
137
138
  - LICENSE
138
139
  - README.md
@@ -181,22 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
182
  - !ruby/object:Gem::Version
182
183
  version: '0'
183
184
  requirements: []
184
- rubygems_version: 3.0.9
185
+ rubygems_version: 3.4.10
185
186
  signing_key:
186
187
  specification_version: 4
187
188
  summary: Guest user implementation for devise
188
- test_files:
189
- - spec/controllers/application_controller_spec.rb
190
- - spec/helpers/devise_guests_helpers_spec.rb
191
- - spec/integration/simple_integration_spec.rb
192
- - spec/internal/app/assets/config/manifest.js
193
- - spec/internal/app/controllers/application_controller.rb
194
- - spec/internal/app/models/user.rb
195
- - spec/internal/config/database.yml
196
- - spec/internal/config/initializers/devise.rb
197
- - spec/internal/config/routes.rb
198
- - spec/internal/config/storage.yml
199
- - spec/internal/db/schema.rb
200
- - spec/internal/log/.gitignore
201
- - spec/internal/public/favicon.ico
202
- - spec/spec_helper.rb
189
+ test_files: []