authentication-zero 2.16.32 → 2.16.33

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: c282c63840e3d6072f86c899f4a477296f2d5145317b715c00e2a434a2c2a565
4
- data.tar.gz: 6f45065151e320e21a01c58a6daf2cf4101780428d6fd6d14341722aaec1bbd1
3
+ metadata.gz: e0192b708d0a77022c0ebcca72d6a67cddf4037e5412b78692b14871d8055dc3
4
+ data.tar.gz: beadfc9974865abbc3a64783d863e7ecffd9ed61d8134cb3db219ef9ab73b4a9
5
5
  SHA512:
6
- metadata.gz: 25ff1fc4f8822b6edaad54cd754b1b14ecfe89bfd6afb195942fce0974e3907852aea9a6fef643cffcd01351f992eaf3524bf0a92e773ff7ed97669de11ff0d6
7
- data.tar.gz: c1d3fa6bc16f41f0826edd2121910ead50c01137cdbf42a7140dd1625eaadab5606678986022d28a9972ca1aef0669e7bb4ab2f1fa5dacdf2b130365963cd6f2
6
+ metadata.gz: c1b8a91979fa37f3486241f6ff40b726809bc196433bc67d3cb509b4adfc2afaf73afc4037a931237d6d0757d9f05a9b7a0e32e82a99d89baedd2ffb808d8b74
7
+ data.tar.gz: 5c542b08d8a748b7b041849eb3bda327439ec9c07dd53d4eb62bafb4caf727f480b2a9c2e4001b6b26e7bb58d1a18e6deea3a2a7770b1d5f44cbd36ccf4b8913
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- authentication-zero (2.16.32)
4
+ authentication-zero (2.16.33)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -70,14 +70,11 @@ Some artifacts are generated in the application, which makes it possible to impl
70
70
 
71
71
  - Add `account_id` to each scoped table using `rails g migration add_account_to_projects account:references`.
72
72
  - Add `include AccountScoped` to scoped models. It set up the account relationship and default scope using the current account.
73
- - The `Current.account` is set according to the url. `http://mywebsite.com/1234/projects`.
74
- - You should customize the authentication flow yourself, it means:
75
- - Add `account_id` to your users table using `rails g migration add_account_to_users account:references`.
76
- - Add `include AccountScoped` to your user model.
77
- - Use `joins(:user).find_by_id...` in the `authenticate` method.
78
- - Use `redirect_to "/#{user.account_id}"` after sign-in.
79
- - Override `Current#user=` to also set the account, `super; self.account = user.account`.
80
- - etc...
73
+
74
+ #### Set Current.account through the URL. `http://myapp.com/:account_id`
75
+
76
+ - Add `require_relative "../lib/account_middleware"` to `config/application.rb`.
77
+ - Add `config.middleware.use AccountMiddleware` to your application class.
81
78
 
82
79
  ## Development
83
80
 
@@ -1,3 +1,3 @@
1
1
  module AuthenticationZero
2
- VERSION = "2.16.32"
2
+ VERSION = "2.16.33"
3
3
  end
@@ -54,11 +54,6 @@ class AuthenticationGenerator < Rails::Generators::Base
54
54
  application "config.action_mailer.default_url_options = { host: \"localhost\", port: 3000 }", env: "development"
55
55
  application "config.action_mailer.default_url_options = { host: \"localhost\", port: 3000 }", env: "test"
56
56
  environment ratelimit_block, env: "production" if options.ratelimit?
57
-
58
- if options.tenantable?
59
- prepend_to_file "config/application.rb", "require_relative \"../lib/account_middleware\"\n"
60
- application "config.middleware.use AccountMiddleware"
61
- end
62
57
  end
63
58
 
64
59
  def create_configuration_files
@@ -16,6 +16,9 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
16
16
  t.string :provider
17
17
  t.string :uid
18
18
  <%- end -%>
19
+ <%- if options.tenantable? %>
20
+ t.references :account, null: false, foreign_key: true
21
+ <%- end -%>
19
22
 
20
23
  t.timestamps
21
24
  end
@@ -1,2 +1,3 @@
1
1
  class Account < ApplicationRecord
2
+ has_one :account, dependent: :destroy
2
3
  end
@@ -8,4 +8,9 @@ class Current < ActiveSupport::CurrentAttributes
8
8
  def session=(session)
9
9
  super; self.user = session.user
10
10
  end
11
+ <%- if options.tenantable? %>
12
+ def user=(user)
13
+ super; self.account = user.account
14
+ end
15
+ <%- end -%>
11
16
  end
@@ -1,5 +1,8 @@
1
1
  class User < ApplicationRecord
2
2
  has_secure_password
3
+ <%- if options.tenantable? %>
4
+ belongs_to :account
5
+ <%- end -%>
3
6
 
4
7
  has_many :email_verification_tokens, dependent: :destroy
5
8
  has_many :password_reset_tokens, dependent: :destroy
@@ -31,15 +34,20 @@ class User < ApplicationRecord
31
34
  self.verified = false
32
35
  end
33
36
  <%- if two_factor? %>
34
- before_create do
37
+ before_validation on: :create do
35
38
  self.otp_secret = ROTP::Base32.random
36
39
  end
37
40
  <%- end -%>
38
41
  <%- if webauthn? %>
39
- before_create do
42
+ before_validation on: :create do
40
43
  self.webauthn_id = WebAuthn.generate_user_id
41
44
  end
42
45
  <%- end -%>
46
+ <%- if options.tenantable? %>
47
+ before_validation on: :create do
48
+ self.account = Account.new
49
+ end
50
+ <%- end -%>
43
51
 
44
52
  after_update if: :password_digest_previously_changed? do
45
53
  sessions.where.not(id: Current.session).delete_all
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: authentication-zero
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.32
4
+ version: 2.16.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nixon