minimalist_authentication 2.4.0 → 2.5.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b96cc91bf5acc0a4606333d5b09207c9c8e6116a20c7fb8b32b2bf34ba15378a
4
- data.tar.gz: 442db2eec5c51db232a5e490892cb2d4380501077ec0350da73f532cac080819
3
+ metadata.gz: 7d59f6a8045fd0f25d5e142e38c5080a084c1d7df63963fdb9e6fa161bd3516b
4
+ data.tar.gz: 28cbe52a31186ed03df8d988474d2d7419c6ba19dc678608a0d2502b698e30b5
5
5
  SHA512:
6
- metadata.gz: 6ff22e83ea138efb4fba838deaf1697bf3e7d65eb80ec19301ed48c56c128ddb1a0838e5f31feee15ada666e228942316008724ba8ba723b11f7185aea862d9b
7
- data.tar.gz: afe046c528a3fda8b673ac84337450edf79ab5c12cdfb49ef52d7374d63a7c0a8062ced6d02315a4fb3f9ad749d27f52fcc075c8a3a262e1198925326e731e14
6
+ metadata.gz: 3affcfacdbe213d469c484c0759a5038a90d99afea3d869db514e5ddc47575459a8c5b678aeb9259c008a5d1b89b89247eac9887d92de4812bd3f3825c1d40d6
7
+ data.tar.gz: 9a60f4023d3c414817f2a514e135d2e23865c478f8d94f2aab41f5b83f31300f9ea403e845c27014fdd659abc632ac77963924ed9f51e3fdf1f85d58a62e7883
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/setup"
2
4
 
3
5
  APP_RAKEFILE = File.expand_path("test/dummy/Rakefile", __dir__)
@@ -1,4 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class EmailVerificationsController < ApplicationController
4
+ def show
5
+ current_user.verify_email(params[:token])
6
+ end
7
+
2
8
  def new
3
9
  # verify email for current_user
4
10
  end
@@ -7,10 +13,6 @@ class EmailVerificationsController < ApplicationController
7
13
  current_user.regenerate_verification_token
8
14
  MinimalistAuthenticationMailer.verify_email(current_user).deliver_now
9
15
 
10
- redirect_to dashboard_path, notice: "Verification email sent to #{current_user.email}, follow the instructions to complete verification. Thank you!"
11
- end
12
-
13
- def show
14
- current_user.verify_email(params[:token])
16
+ redirect_to dashboard_path, notice: t(".notice", email: current_user.email)
15
17
  end
16
18
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class EmailsController < ApplicationController
2
- def edit
3
- end
4
+ def edit; end
4
5
 
5
6
  def update
6
7
  if current_user.update(user_params)
7
- redirect_to update_redirect_path, notice: 'Email successfully updated'
8
+ redirect_to update_redirect_path, notice: t(".notice")
8
9
  else
9
10
  render :edit
10
11
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PasswordResetsController < ApplicationController
2
4
  skip_before_action :authorization_required
3
5
 
4
- layout 'sessions'
6
+ layout "sessions"
5
7
 
6
8
  # Form for user to request a password reset
7
9
  def new
@@ -22,6 +24,7 @@ class PasswordResetsController < ApplicationController
22
24
 
23
25
  def user
24
26
  return unless URI::MailTo::EMAIL_REGEXP.match?(email)
27
+
25
28
  @user ||= MinimalistAuthentication.configuration.user_model.active.email_verified.find_by(email: email)
26
29
  end
27
30
 
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class PasswordsController < ApplicationController
2
4
  skip_before_action :authorization_required
3
5
 
4
- layout 'sessions'
6
+ layout "sessions"
5
7
 
6
8
  # From for user to update password
7
9
  def edit
@@ -12,7 +14,7 @@ class PasswordsController < ApplicationController
12
14
  # Update user's password
13
15
  def update
14
16
  if user.secure_update(token, password_params.merge(password_required: true))
15
- redirect_to new_session_path, notice: 'Password successfully updated'
17
+ redirect_to new_session_path, notice: t(".notice")
16
18
  else
17
19
  render :edit
18
20
  end
@@ -1,5 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class ApplicationMailer < ActionMailer::Base
2
- default from: 'from@example.com'
3
- layout 'mailer'
4
+ default from: "from@example.com"
5
+ layout "mailer"
4
6
  end
5
-
@@ -1,12 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class MinimalistAuthenticationMailer < ApplicationMailer
2
4
  def verify_email(user)
3
5
  @verify_email_link = email_verification_url(token: user.verification_token)
4
- send_to(user, 'Email Address Verification')
6
+ send_to(user, "Email Address Verification")
5
7
  end
6
8
 
7
9
  def update_password(user)
8
10
  @edit_password_link = edit_user_password_url(user, token: user.verification_token)
9
- send_to(user, 'Update Password')
11
+ send_to(user, "Update Password")
10
12
  end
11
13
 
12
14
  private
@@ -2,9 +2,6 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5
- <style>
6
- /* Email styles need to be inline */
7
- </style>
8
5
  </head>
9
6
 
10
7
  <body>
@@ -1,7 +1,24 @@
1
1
  en:
2
+ # controllers
3
+ email_verifications:
4
+ create:
5
+ notice: Verification email sent to %{email}, follow the instructions to complete verification. Thank you!
6
+ emails:
7
+ update:
8
+ notice: Email successfully updated
9
+ passwords:
10
+ update:
11
+ notice: Password successfully updated
12
+ sessions:
13
+ create:
14
+ alert: Couldn't log you in as %{identifier}
15
+ destroy:
16
+ notice: You have been logged out.
17
+
18
+ # mailers
2
19
  minimalist_authentication_mailer:
3
20
  update_password:
4
- opening: 'Please click the link below to update your password:'
21
+ opening: Please click the link below to update your password.
5
22
  verify_email:
6
- opening: "Please click the link below to complete your email verification:"
7
- closing: 'If you did not request email verification you can safely ignore this message.'
23
+ opening: Please click the link below to complete your email verification.
24
+ closing: If you did not request email verification you can safely ignore this message.
data/config/routes.rb CHANGED
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Rails.application.routes.draw do
2
4
  resources :user, only: [] do
3
- resource :password, only: %i(edit update)
5
+ resource :password, only: %i[edit update]
4
6
  end
5
7
 
6
- resource :password_reset, only: %i(new create)
8
+ resource :password_reset, only: %i[new create]
7
9
 
8
- resource :email, only: %i(edit update)
9
- resource :email_verification, only: %i(new create show)
10
+ resource :email, only: %i[edit update]
11
+ resource :email_verification, only: %i[new create show]
10
12
  end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module MinimalistAuthentication
4
+ class Authenticator
5
+ LOGIN_FIELDS = %w[email username].freeze
6
+
7
+ attr_reader :field, :value, :password
8
+
9
+ # Attempts to find and authenticate a user based on the provided params. Expects a params
10
+ # hash with email or username and password keys. Returns user upon successful authentication.
11
+ # Otherwise returns nil.
12
+ #
13
+ # Params examples:
14
+ # { email: 'user@example.com', password: 'abc123' }
15
+ # { username: 'user', password: 'abc123' }
16
+ # Returns user object upon successful authentication.
17
+ def self.authenticated_user(params)
18
+ hash = params.to_h.with_indifferent_access
19
+
20
+ # Extract login field from hash
21
+ field = (hash.keys & LOGIN_FIELDS).first
22
+
23
+ # Attempt to authenticate user
24
+ new(field: field, value: hash[field], password: hash["password"]).authenticated_user
25
+ end
26
+
27
+ def initialize(field:, value:, password:)
28
+ @field = field
29
+ @value = value
30
+ @password = password
31
+ end
32
+
33
+ # Returns user upon successful authentication, otherwise returns nil.
34
+ def authenticated_user
35
+ user if valid? && user&.authenticated?(password)
36
+ end
37
+
38
+ # Returns true if all the authentication attributes are present.
39
+ def valid?
40
+ [field, value, password].all?(&:present?)
41
+ end
42
+
43
+ private
44
+
45
+ def user
46
+ @user ||= MinimalistAuthentication.configuration.user_model.active.find_by(field => value)
47
+ end
48
+ end
49
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  # store the configuration object
3
5
  def self.configuration
@@ -54,7 +56,7 @@ module MinimalistAuthentication
54
56
  attr_accessor :email_prefix
55
57
 
56
58
  def initialize
57
- self.user_model_name = '::User'
59
+ self.user_model_name = "::User"
58
60
  self.session_key = :user_id
59
61
  self.validate_email = true
60
62
  self.validate_email_presence = true
@@ -75,7 +77,7 @@ module MinimalistAuthentication
75
77
  private
76
78
 
77
79
  def default_email_prefix
78
- "[#{Rails.application.engine_name.gsub(/_application\z/, '').titleize}]"
80
+ "[#{Rails.application.engine_name.delete_suffix('_application').titleize}]"
79
81
  end
80
82
  end
81
83
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module Controller
3
5
  extend ActiveSupport::Concern
@@ -13,11 +15,12 @@ module MinimalistAuthentication
13
15
  private
14
16
 
15
17
  def current_user
16
- @current_user ||= (get_user_from_session || MinimalistAuthentication.configuration.user_model.guest)
18
+ @current_user ||= (find_session_user || MinimalistAuthentication.configuration.user_model.guest)
17
19
  end
18
20
 
19
- def get_user_from_session
21
+ def find_session_user
20
22
  return unless session_user_id
23
+
21
24
  MinimalistAuthentication.configuration.user_model.active.find_by(id: session_user_id)
22
25
  end
23
26
 
@@ -29,25 +32,25 @@ module MinimalistAuthentication
29
32
  authorized? || access_denied
30
33
  end
31
34
 
32
- def authorized?(action = action_name, resource = controller_name)
35
+ def authorized?(_action = action_name, _resource = controller_name)
33
36
  logged_in?
34
37
  end
35
38
 
36
39
  def logged_in?
37
- !current_user.is_guest?
40
+ !current_user.guest?
38
41
  end
39
42
 
40
43
  def access_denied
41
- store_location if request.method.to_s.downcase == 'get' && !logged_in?
44
+ store_location if request.get? && !logged_in?
42
45
  redirect_to new_session_path
43
46
  end
44
47
 
45
48
  def store_location
46
- session['return_to'] = request.fullpath
49
+ session["return_to"] = request.fullpath
47
50
  end
48
51
 
49
52
  def redirect_back_or_default(default)
50
- redirect_to(session.delete('return_to') || default)
53
+ redirect_to(session.delete("return_to") || default)
51
54
  end
52
55
  end
53
56
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module Conversions
3
5
  class MergePasswordHash
4
-
5
6
  class << self
6
7
  def run!
7
8
  user_model.where(using_digest_version: 3, password_hash: nil).each do |user|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module EmailVerification
3
5
  extend ActiveSupport::Concern
@@ -5,7 +7,7 @@ module MinimalistAuthentication
5
7
  included do
6
8
  before_save :clear_email_verification, if: ->(user) { user.email_changed? }
7
9
 
8
- scope :email_verified, -> { where('LENGTH(email) > 2').where.not(email_verified_at: nil) }
10
+ scope :email_verified, -> { where("LENGTH(email) > 2").where.not(email_verified_at: nil) }
9
11
  end
10
12
 
11
13
  def needs_email_set?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  class Engine < ::Rails::Engine
3
5
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  class NullPassword
3
5
  # does not match any object
4
- def ==(object)
6
+ def ==(_other)
5
7
  false
6
8
  end
7
9
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  class Password
3
5
  class << self
@@ -8,7 +10,7 @@ module MinimalistAuthentication
8
10
 
9
11
  # Cache the calibrated bcrypt cost factor.
10
12
  def cost
11
- @bcrypt_cost ||= calibrate_cost
13
+ @cost ||= calibrate_cost
12
14
  end
13
15
 
14
16
  private
@@ -25,11 +27,9 @@ module MinimalistAuthentication
25
27
 
26
28
  # Returns a password object wrapping a valid BCrypt password or a NullPassword
27
29
  def initialize(password_hash)
28
- begin
29
- self.bcrypt_password = ::BCrypt::Password.new(password_hash)
30
- rescue ::BCrypt::Errors::InvalidHash
31
- self.bcrypt_password = NullPassword.new
32
- end
30
+ self.bcrypt_password = ::BCrypt::Password.new(password_hash)
31
+ rescue ::BCrypt::Errors::InvalidHash
32
+ self.bcrypt_password = NullPassword.new
33
33
  end
34
34
 
35
35
  # Delegate methods to bcrypt_password
@@ -1,23 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module Sessions
3
5
  extend ActiveSupport::Concern
4
6
 
5
7
  included do
6
- skip_before_action :authorization_required, only: %i(new create)
8
+ skip_before_action :authorization_required, only: %i[new create]
7
9
  before_action :redirect_logged_in_users, only: :new
8
10
  end
9
11
 
10
12
  def new
11
- new_user
13
+ user
12
14
  end
13
15
 
14
16
  def create
15
17
  if authenticated_user
16
- scrub_session!
17
- authenticated_user.logged_in
18
- session[MinimalistAuthentication.configuration.session_key] = authenticated_user.id
18
+ log_in_user
19
19
  set_or_verify_email || after_authentication_success
20
- return
21
20
  else
22
21
  after_authentication_failure
23
22
  end
@@ -25,18 +24,23 @@ module MinimalistAuthentication
25
24
 
26
25
  def destroy
27
26
  scrub_session!
28
- flash[:notice] = "You have been logged out."
29
- redirect_to logout_redirect_to
27
+ redirect_to logout_redirect_to, notice: t(".notice"), status: :see_other
30
28
  end
31
29
 
32
30
  private
33
31
 
34
- def new_user
32
+ def user
35
33
  @user ||= MinimalistAuthentication.configuration.user_model.new
36
34
  end
37
35
 
38
36
  def authenticated_user
39
- @authenticated_user ||= MinimalistAuthentication.configuration.user_model.authenticate(user_params)
37
+ @authenticated_user ||= MinimalistAuthentication::Authenticator.authenticated_user(user_params)
38
+ end
39
+
40
+ def log_in_user
41
+ scrub_session!
42
+ authenticated_user.logged_in
43
+ session[MinimalistAuthentication.configuration.session_key] = authenticated_user.id
40
44
  end
41
45
 
42
46
  def user_params
@@ -57,24 +61,27 @@ module MinimalistAuthentication
57
61
  redirect_to(login_redirect_to) if logged_in?
58
62
  end
59
63
 
60
-
61
64
  def after_authentication_success
62
65
  redirect_back_or_default(login_redirect_to)
63
66
  end
64
67
 
65
68
  def attempting_to_verify?
66
69
  # check if user is attpting to verify their email
67
- session['return_to'].to_s[/token/]
70
+ session["return_to"].to_s[/token/]
68
71
  end
69
72
 
70
73
  def after_authentication_failure
71
- flash.now[:alert] = "Couldn't log you in as '#{user_params[:email] || user_params[:username]}'"
72
- new_user
73
- render :new
74
+ flash.now.alert = t(".alert", identifier: identifier)
75
+ user
76
+ render :new, status: :unprocessable_entity
77
+ end
78
+
79
+ def identifier
80
+ user_params.values_at(*MinimalistAuthentication::Authenticator::LOGIN_FIELDS).compact.first
74
81
  end
75
82
 
76
83
  def scrub_session!
77
- (session.keys - %w(session_id return_to)).each do |key|
84
+ (session.keys - %w[session_id return_to]).each do |key|
78
85
  session.delete(key)
79
86
  end
80
87
  end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module TestHelper
3
- def login_as(user_fixture_name, password = 'password')
5
+ def login_as(user_fixture_name, password = "password")
4
6
  post session_path, params: { user: { email: users(user_fixture_name).email, password: password } }
5
7
  end
6
8
 
@@ -1,10 +1,12 @@
1
- require 'bcrypt'
1
+ # frozen_string_literal: true
2
+
3
+ require "bcrypt"
2
4
 
3
5
  module MinimalistAuthentication
4
6
  module User
5
7
  extend ActiveSupport::Concern
6
8
 
7
- GUEST_USER_EMAIL = 'guest'
9
+ GUEST_USER_EMAIL = "guest"
8
10
  PASSWORD_MIN = 8
9
11
  PASSWORD_MAX = 40
10
12
 
@@ -42,24 +44,12 @@ module MinimalistAuthentication
42
44
  end
43
45
 
44
46
  module ClassMethods
45
- # Authenticates a user form the params provided. Expects a params hash with
46
- # email or username and password keys.
47
- # Params examples:
48
- # { email: 'user@example.com', password: 'abc123' }
49
- # { username: 'user', password: 'abc123' }
50
- # Returns user upon successful authentication.
51
- # Otherwise returns nil.
52
47
  def authenticate(params)
53
- # extract email or username and the associated value
54
- field, value = params.to_h.select { |key, value| %w(email username).include?(key.to_s) && value.present? }.first
55
- # return nil if field, value, or password is blank
56
- return if field.blank? || value.blank? || params[:password].blank?
57
- # attempt to find the user using field and value
58
- user = active.where(field => value).first
59
- # check if a user was found and if they can be authenticated
60
- return unless user && user.authenticated?(params[:password])
61
- # return the authenticated user
62
- return user
48
+ ActiveSupport::Deprecation.warn(<<-MSG.squish)
49
+ Calling #{MinimalistAuthentication.configuration.user_model_name}::authenticate is deprecated.
50
+ Use MinimalistAuthentication::Authenticator.authenticated_user instead.
51
+ MSG
52
+ MinimalistAuthentication::Authenticator.authenticated_user(params)
63
53
  end
64
54
 
65
55
  # Returns a frozen user with the email set to GUEST_USER_EMAIL.
@@ -68,38 +58,35 @@ module MinimalistAuthentication
68
58
  end
69
59
  end
70
60
 
71
- # Returns true if the user is active.
72
- def active?
73
- active
74
- end
75
-
76
61
  # Returns true if the user is not active.
77
62
  def inactive?
78
- !active
63
+ !active?
79
64
  end
80
65
 
81
- # Return true if password matches the hashed_password.
82
- # If successful checks for an outdated password_hash and updates if
83
- # necessary.
66
+ # Returns true if password matches the hashed_password, otherwise returns false. Upon successful
67
+ # authentication the user's password_hash is updated if required.
84
68
  def authenticated?(password)
85
- if password_object == password
86
- update_hash!(password) if password_object.stale?
87
- return true
88
- end
69
+ return false unless password_object == password
89
70
 
90
- return false
71
+ update_hash!(password) if password_object.stale?
72
+ true
91
73
  end
92
74
 
93
75
  def logged_in
94
- # use update_column to avoid updated_on trigger
76
+ # Use update_column to avoid updated_on trigger
95
77
  update_column(:last_logged_in_at, Time.current)
96
78
  end
97
79
 
98
80
  # Check if user is a guest based on their email attribute
99
- def is_guest?
81
+ def guest?
100
82
  email == GUEST_USER_EMAIL
101
83
  end
102
84
 
85
+ def is_guest? # rubocop:disable Naming/PredicateName
86
+ ActiveSupport::Deprecation.warn("Calling #is_guest? is deprecated. Use #guest? instead")
87
+ guest?
88
+ end
89
+
103
90
  private
104
91
 
105
92
  # Set self.password to password, hash, and save
@@ -112,6 +99,7 @@ module MinimalistAuthentication
112
99
  # Hash password and store in hash_password unless password is blank.
113
100
  def hash_password
114
101
  return if password.blank?
102
+
115
103
  self.password_hash = Password.create(password)
116
104
  end
117
105
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
4
  module VerifiableToken
3
5
  extend ActiveSupport::Concern
@@ -13,8 +15,8 @@ module MinimalistAuthentication
13
15
  if matches_verification_token?(token)
14
16
  update(attributes) && clear_token
15
17
  else
16
- errors.add(:base, 'Verfication token check failed')
17
- return false
18
+ errors.add(:base, "Verfication token check failed")
19
+ false
18
20
  end
19
21
  end
20
22
 
@@ -24,6 +26,7 @@ module MinimalistAuthentication
24
26
 
25
27
  def verification_token_valid?
26
28
  return false if verification_token.blank? || verification_token_generated_at.blank?
29
+
27
30
  verification_token_generated_at > TOKEN_EXPIRATION_HOURS.hours.ago
28
31
  end
29
32
 
@@ -35,8 +38,8 @@ module MinimalistAuthentication
35
38
 
36
39
  def update_token(token: self.class.generate_unique_secure_token, time: Time.now.utc)
37
40
  update!(
38
- verification_token: token,
39
- verification_token_generated_at: time
41
+ verification_token: token,
42
+ verification_token_generated_at: time
40
43
  )
41
44
  end
42
45
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module MinimalistAuthentication
2
- VERSION = '2.4.0'
4
+ VERSION = "2.5.1"
3
5
  end
@@ -1,11 +1,14 @@
1
- require 'minimalist_authentication/engine'
2
- require 'minimalist_authentication/configuration'
3
- require 'minimalist_authentication/user'
4
- require 'minimalist_authentication/verifiable_token'
5
- require 'minimalist_authentication/email_verification'
6
- require 'minimalist_authentication/password'
7
- require 'minimalist_authentication/null_password'
8
- require 'minimalist_authentication/controller'
9
- require 'minimalist_authentication/sessions'
10
- require 'minimalist_authentication/test_helper'
11
- require 'minimalist_authentication/conversions/merge_password_hash'
1
+ # frozen_string_literal: true
2
+
3
+ require "minimalist_authentication/engine"
4
+ require "minimalist_authentication/authenticator"
5
+ require "minimalist_authentication/configuration"
6
+ require "minimalist_authentication/user"
7
+ require "minimalist_authentication/verifiable_token"
8
+ require "minimalist_authentication/email_verification"
9
+ require "minimalist_authentication/password"
10
+ require "minimalist_authentication/null_password"
11
+ require "minimalist_authentication/controller"
12
+ require "minimalist_authentication/sessions"
13
+ require "minimalist_authentication/test_helper"
14
+ require "minimalist_authentication/conversions/merge_password_hash"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minimalist_authentication
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Baldwin
@@ -9,42 +9,42 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-01-31 00:00:00.000000000 Z
12
+ date: 2023-07-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
15
+ name: bcrypt
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '3.1'
18
21
  - - ">="
19
22
  - !ruby/object:Gem::Version
20
- version: '5.0'
23
+ version: 3.1.3
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
28
+ - - "~>"
29
+ - !ruby/object:Gem::Version
30
+ version: '3.1'
25
31
  - - ">="
26
32
  - !ruby/object:Gem::Version
27
- version: '5.0'
33
+ version: 3.1.3
28
34
  - !ruby/object:Gem::Dependency
29
- name: bcrypt
35
+ name: rails
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: '3.1'
35
38
  - - ">="
36
39
  - !ruby/object:Gem::Version
37
- version: 3.1.3
40
+ version: 6.0.0
38
41
  type: :runtime
39
42
  prerelease: false
40
43
  version_requirements: !ruby/object:Gem::Requirement
41
44
  requirements:
42
- - - "~>"
43
- - !ruby/object:Gem::Version
44
- version: '3.1'
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 3.1.3
47
+ version: 6.0.0
48
48
  description: A Rails authentication plugin that takes a minimalist approach. It is
49
49
  designed to be simple to understand, use, and modify for your application.
50
50
  email:
@@ -78,6 +78,7 @@ files:
78
78
  - config/locales/minimalist_authentication.en.yml
79
79
  - config/routes.rb
80
80
  - lib/minimalist_authentication.rb
81
+ - lib/minimalist_authentication/authenticator.rb
81
82
  - lib/minimalist_authentication/configuration.rb
82
83
  - lib/minimalist_authentication/controller.rb
83
84
  - lib/minimalist_authentication/conversions/merge_password_hash.rb
@@ -105,14 +106,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
105
106
  requirements:
106
107
  - - ">="
107
108
  - !ruby/object:Gem::Version
108
- version: '0'
109
+ version: 2.7.0
109
110
  required_rubygems_version: !ruby/object:Gem::Requirement
110
111
  requirements:
111
112
  - - ">="
112
113
  - !ruby/object:Gem::Version
113
114
  version: '0'
114
115
  requirements: []
115
- rubygems_version: 3.4.5
116
+ rubygems_version: 3.4.15
116
117
  signing_key:
117
118
  specification_version: 4
118
119
  summary: A Rails authentication plugin that takes a minimalist approach.