alchemy-devise 6.1.0 → 6.3.0

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: f58d46b9126aecea12b501b449de4effd33b1c5eccf18f82937a5662c35469a4
4
- data.tar.gz: 46bf5120a6e8d2dcb536ba407d6bfcf1572164833b789752d9f58e8c84713914
3
+ metadata.gz: c3c6037023148c5226b1f13b701735f8ee73d4727f3bc69cdbdaea9613cbe7d4
4
+ data.tar.gz: 9b0881dfadd646ce44f56e4eeb8bba50094c840308bff704f302922556c97dae
5
5
  SHA512:
6
- metadata.gz: 101acd9fa3dde21bf274bf493e6b9f9e801d47d7e988e01f3cef86fd813951cb291268f9690e06c89a9c1d881a625e9306fd0fc8d1f3b5e485479dcbbe12852f
7
- data.tar.gz: 033a6f2df8c32e7281c0b5dd55309947cf0400cfd87ba1703a43c5ab25b098c82ef65edd739750c9fabbf499765d487d7663068fd69a95fbc4fc6a2430f49580
6
+ metadata.gz: 96bb14ab72f3396e5cf1f4777cba1cd7ca93700b9560fbb2fbaa4a998ba117ee4d64291e575b42fc36b7c00209bb259ddb3f4574c9d5a3857a3993975a44e800
7
+ data.tar.gz: 82ffa842162d02522901e3db1633ca6aa3e91ff1be5c3deb3cce85449a98f223eb0697cba9cf1aa353160fe45b6989a13895630057257bd327aece6baf77365f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 6.3.0 (2023-07-05)
4
+
5
+ - Remove Alchemy 7.0 and 6.0 support [#174](https://github.com/AlchemyCMS/alchemy-devise/pull/174) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Use standard.rb to lint code [#166](https://github.com/AlchemyCMS/alchemy-devise/pull/166) ([tvdeyen](https://github.com/tvdeyen))
7
+ - Update brakeman scan action [#165](https://github.com/AlchemyCMS/alchemy-devise/pull/165) ([tvdeyen](https://github.com/tvdeyen))
8
+
9
+ ## 6.2.0 (2023-04-01)
10
+
11
+ - Add Alchemy 7 support [#164](https://github.com/AlchemyCMS/alchemy-devise/pull/164) ([tvdeyen](https://github.com/tvdeyen))
12
+ - Upgrade rspec-rails to version 6.0.1 [#153](https://github.com/AlchemyCMS/alchemy-devise/pull/153) ([depfu](https://github.com/apps/depfu))
13
+
3
14
  ## 6.1.0 (2023-01-20)
4
15
 
5
16
  - Remove Alchemy 5.3 support [#158](https://github.com/AlchemyCMS/alchemy-devise/pull/158) ([tvdeyen](https://github.com/tvdeyen))
data/README.md CHANGED
@@ -1,8 +1,9 @@
1
1
  ## Devise based authentication for AlchemyCMS
2
2
 
3
3
  [![Build Status](https://github.com/AlchemyCMS/alchemy-devise/workflows/CI/badge.svg?branch=main)](https://github.com/AlchemyCMS/alchemy-devise/actions)
4
+ [![Brakeman Scan](https://github.com/AlchemyCMS/alchemy-devise/actions/workflows/brakeman-analysis.yml/badge.svg)](https://github.com/AlchemyCMS/alchemy-devise/actions/workflows/brakeman-analysis.yml)
4
5
 
5
- [![Gem Version](https://badge.fury.io/rb/alchemy-devise.svg)](http://badge.fury.io/rb/alchemy-devise) [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/coverage) [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/gpa.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise) [![security](https://hakiri.io/github/AlchemyCMS/alchemy-devise/main.svg)](https://hakiri.io/github/AlchemyCMS/alchemy-devise/main)
6
+ [![Gem Version](https://badge.fury.io/rb/alchemy-devise.svg)](http://badge.fury.io/rb/alchemy-devise) [![Test Coverage](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/coverage.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/coverage) [![Code Climate](https://codeclimate.com/github/AlchemyCMS/alchemy-devise/badges/gpa.svg)](https://codeclimate.com/github/AlchemyCMS/alchemy-devise)
6
7
 
7
8
  AlchemyCMS has no authentication in its core. So it is possible to bring your own authentication and use it to authorize users in AlchemyCMS. If you don't have your own authentication, you can use this gem.
8
9
 
@@ -7,10 +7,6 @@ module Alchemy
7
7
  class PasswordsController < ::Devise::PasswordsController
8
8
  include Alchemy::Admin::Locale
9
9
 
10
- if Alchemy.gem_version <= Gem::Version.new("4.9")
11
- before_action { enforce_ssl if ssl_required? && !request.ssl? }
12
- end
13
-
14
10
  helper "Alchemy::Admin::Base"
15
11
 
16
12
  layout "alchemy/admin"
@@ -9,12 +9,7 @@ module Alchemy
9
9
 
10
10
  protect_from_forgery prepend: true
11
11
 
12
- if Alchemy.gem_version <= Gem::Version.new("4.9")
13
- before_action except: "destroy" do
14
- enforce_ssl if ssl_required? && !request.ssl?
15
- end
16
- end
17
- before_action :check_user_count, :only => :new
12
+ before_action :check_user_count, only: :new
18
13
 
19
14
  helper "Alchemy::Admin::Base"
20
15
 
@@ -24,11 +19,11 @@ module Alchemy
24
19
  authenticate_user!
25
20
 
26
21
  if user_signed_in?
27
- if session[:redirect_path].blank?
28
- redirect_path = admin_dashboard_path
22
+ redirect_path = if session[:redirect_path].blank?
23
+ admin_dashboard_path
29
24
  else
30
25
  # We have to strip double slashes from beginning of path, because of strange rails/rack bug.
31
- redirect_path = session[:redirect_path].gsub(/\A\/{2,}/, "/")
26
+ session[:redirect_path].gsub(/\A\/{2,}/, "/")
32
27
  end
33
28
  redirect_to redirect_path,
34
29
  notice: t(:signed_in, scope: "devise.sessions")
@@ -1,7 +1,6 @@
1
1
  module Alchemy
2
2
  module Admin
3
3
  class UsersController < ResourcesController
4
-
5
4
  before_action :set_roles, except: [:index, :destroy]
6
5
 
7
6
  load_and_authorize_resource class: Alchemy::User,
@@ -14,7 +13,7 @@ module Alchemy
14
13
 
15
14
  def index
16
15
  @query = User.ransack(params[:q])
17
- @query.sorts = 'login asc' if @query.sorts.empty?
16
+ @query.sorts = "login asc" if @query.sorts.empty?
18
17
  @users = @query.result
19
18
  .page(params[:page] || 1)
20
19
  .per(items_per_page)
@@ -53,7 +52,7 @@ module Alchemy
53
52
  deliver_welcome_mail
54
53
  render_errors_or_redirect @user,
55
54
  admin_users_path,
56
- Alchemy.t("User updated", :name => @user.name)
55
+ Alchemy.t("User updated", name: @user.name)
57
56
  end
58
57
 
59
58
  def destroy
@@ -92,9 +91,9 @@ module Alchemy
92
91
  end
93
92
 
94
93
  def signup_admin_or_redirect
95
- @user.alchemy_roles = %w(admin)
94
+ @user.alchemy_roles = %w[admin]
96
95
  if @user.save
97
- flash[:notice] = Alchemy.t('Successfully signup admin user')
96
+ flash[:notice] = Alchemy.t("Successfully signup admin user")
98
97
  sign_in :user, @user
99
98
  deliver_welcome_mail
100
99
  redirect_to admin_pages_path
@@ -116,7 +115,7 @@ module Alchemy
116
115
  end
117
116
 
118
117
  def deliver_welcome_mail
119
- if @user.valid? && @user.send_credentials == '1'
118
+ if @user.valid? && @user.send_credentials == "1"
120
119
  @user.deliver_welcome_mail
121
120
  end
122
121
  end
@@ -1,7 +1,6 @@
1
1
  module Alchemy
2
2
  class Notifications < ActionMailer::Base
3
-
4
- default(from: Config.get(:mailer)['mail_from'])
3
+ default(from: Config.get(:mailer)["mail_from"])
5
4
 
6
5
  def member_created(user)
7
6
  @user = user
@@ -21,7 +20,7 @@ module Alchemy
21
20
  )
22
21
  end
23
22
 
24
- def reset_password_instructions(user, token, opts={})
23
+ def reset_password_instructions(user, token, opts = {})
25
24
  @user = user
26
25
  @token = token
27
26
  mail(
@@ -1,5 +1,7 @@
1
- require 'devise/orm/active_record'
2
- require 'userstamp'
1
+ # frozen_string_literal: true
2
+
3
+ require "devise/orm/active_record"
4
+ require "userstamp"
3
5
 
4
6
  module Alchemy
5
7
  class User < ActiveRecord::Base
@@ -15,7 +17,7 @@ module Alchemy
15
17
  :tag_list
16
18
  ]
17
19
 
18
- devise *Alchemy.devise_modules
20
+ devise(*Alchemy.devise_modules)
19
21
 
20
22
  include Alchemy::Taggable
21
23
 
@@ -29,13 +31,31 @@ module Alchemy
29
31
  # Unlock all locked pages before destroy.
30
32
  before_destroy :unlock_pages!
31
33
 
32
- scope :admins, -> { where(arel_table[:alchemy_roles].matches('%admin%')) }
33
- scope :logged_in, -> { where('last_request_at > ?', logged_in_timeout.seconds.ago) }
34
- scope :logged_out, -> { where('last_request_at is NULL or last_request_at <= ?', logged_in_timeout.seconds.ago) }
34
+ scope :admins, -> { where(arel_table[:alchemy_roles].matches("%admin%")) }
35
+ scope :logged_in, -> { where("last_request_at > ?", logged_in_timeout.seconds.ago) }
36
+ scope :logged_out, -> { where("last_request_at is NULL or last_request_at <= ?", logged_in_timeout.seconds.ago) }
35
37
 
36
38
  ROLES = Config.get(:user_roles)
37
39
 
38
40
  class << self
41
+ def ransackable_attributes(_auth_object = nil)
42
+ %w[
43
+ email
44
+ firstname
45
+ lastname
46
+ login
47
+ ]
48
+ end
49
+
50
+ alias_method :searchable_alchemy_resource_attributes, :ransackable_attributes
51
+
52
+ def ransackable_associations(_auth_object = nil)
53
+ %w[
54
+ taggings
55
+ tags
56
+ ]
57
+ end
58
+
39
59
  def human_rolename(role)
40
60
  Alchemy.t("user_roles.#{role}")
41
61
  end
@@ -43,19 +63,6 @@ module Alchemy
43
63
  def logged_in_timeout
44
64
  Config.get(:auto_logout_time).minutes.to_i
45
65
  end
46
-
47
- # Search users that match query
48
- #
49
- # Attributes searched are: login, email, firstname, lastname
50
- #
51
- def search(query)
52
- query = "%#{query.downcase}%"
53
-
54
- where arel_table[:login].lower.matches(query)
55
- .or arel_table[:email].lower.matches(query)
56
- .or arel_table[:firstname].lower.matches(query)
57
- .or arel_table[:lastname].lower.matches(query)
58
- end
59
66
  end
60
67
 
61
68
  def role_symbols
@@ -67,25 +74,26 @@ module Alchemy
67
74
  end
68
75
 
69
76
  def alchemy_roles
70
- read_attribute(:alchemy_roles).split(' ')
77
+ read_attribute(:alchemy_roles).split(" ")
71
78
  end
72
79
 
73
80
  def alchemy_roles=(roles_string)
74
81
  if roles_string.is_a? Array
75
- write_attribute(:alchemy_roles, roles_string.join(' '))
82
+ write_attribute(:alchemy_roles, roles_string.join(" "))
76
83
  elsif roles_string.is_a? String
77
84
  write_attribute(:alchemy_roles, roles_string)
78
85
  end
79
86
  end
80
87
 
81
88
  def add_role(role)
82
- self.alchemy_roles = self.alchemy_roles.push(role.to_s).uniq
89
+ self.alchemy_roles = alchemy_roles.push(role.to_s).uniq
83
90
  end
84
91
 
85
92
  # Returns true if the user ahs admin role
86
93
  def is_admin?
87
- has_role? 'admin'
94
+ has_role? "admin"
88
95
  end
96
+
89
97
  alias_method :admin?, :is_admin?
90
98
 
91
99
  # Returns true if the user has the given role.
@@ -105,6 +113,7 @@ module Alchemy
105
113
  def pages_locked_by_me
106
114
  Page.locked_by(self).order(:updated_at)
107
115
  end
116
+
108
117
  alias_method :locked_pages, :pages_locked_by_me
109
118
 
110
119
  # Returns the firstname and lastname as a string
@@ -118,11 +127,12 @@ module Alchemy
118
127
  if lastname.blank? && firstname.blank?
119
128
  login
120
129
  else
121
- options = {:flipped => false}.merge(options)
130
+ options = {flipped: false}.merge(options)
122
131
  fullname = options[:flipped] ? "#{lastname}, #{firstname}" : "#{firstname} #{lastname}"
123
132
  fullname.squeeze(" ").strip
124
133
  end
125
134
  end
135
+
126
136
  alias_method :name, :fullname
127
137
  alias_method :alchemy_display_name, :fullname
128
138
 
@@ -150,7 +160,7 @@ module Alchemy
150
160
  # Delivers a welcome mail depending from user's role.
151
161
  #
152
162
  def deliver_welcome_mail
153
- if has_role?('author') || has_role?('editor') || has_role?('admin')
163
+ if has_role?("author") || has_role?("editor") || has_role?("admin")
154
164
  Notifications.alchemy_user_created(self).deliver_later
155
165
  else
156
166
  Notifications.member_created(self).deliver_later
@@ -13,8 +13,8 @@ Rails.application.config.to_prepare do
13
13
  name: "modules.users",
14
14
  controller: "/alchemy/admin/users",
15
15
  action: "index",
16
- icon: "users",
17
- },
16
+ icon: "users"
17
+ }
18
18
  })
19
19
 
20
20
  Alchemy.signup_path = "/admin/signup"
data/config/routes.rb CHANGED
@@ -3,35 +3,34 @@ Alchemy::Engine.routes.draw do
3
3
  path: Alchemy.admin_path,
4
4
  constraints: Alchemy.admin_constraints
5
5
  } do
6
-
7
6
  devise_for :user,
8
- class_name: 'Alchemy::User',
7
+ class_name: "Alchemy::User",
9
8
  singular: :user,
10
9
  skip: :all,
11
10
  controllers: {
12
- sessions: 'alchemy/admin/user_sessions',
13
- passwords: 'alchemy/admin/passwords'
11
+ sessions: "alchemy/admin/user_sessions",
12
+ passwords: "alchemy/admin/passwords"
14
13
  },
15
14
  router_name: :alchemy
16
15
 
17
16
  devise_scope :user do
18
- get '/dashboard' => 'dashboard#index',
17
+ get "/dashboard" => "dashboard#index",
19
18
  :as => :user_root
20
- get '/signup' => 'users#signup',
19
+ get "/signup" => "users#signup",
21
20
  :as => :signup
22
- get '/login' => 'user_sessions#new',
21
+ get "/login" => "user_sessions#new",
23
22
  :as => :login
24
- post '/login' => 'user_sessions#create'
25
- match '/logout' => 'user_sessions#destroy',
26
- :as => :logout, via: Devise.sign_out_via
23
+ post "/login" => "user_sessions#create"
24
+ match "/logout" => "user_sessions#destroy",
25
+ :as => :logout, :via => Devise.sign_out_via
27
26
 
28
- get '/passwords' => 'passwords#new',
27
+ get "/passwords" => "passwords#new",
29
28
  :as => :new_password
30
- get '/passwords/:id/edit/:reset_password_token' => 'passwords#edit',
29
+ get "/passwords/:id/edit/:reset_password_token" => "passwords#edit",
31
30
  :as => :edit_password
32
- post '/passwords' => 'passwords#create',
31
+ post "/passwords" => "passwords#create",
33
32
  :as => :reset_password
34
- patch '/passwords' => 'passwords#update',
33
+ patch "/passwords" => "passwords#update",
35
34
  :as => :update_password
36
35
  end
37
36
 
data/config/spring.rb CHANGED
@@ -1 +1 @@
1
- Spring.application_root = 'spec/dummy'
1
+ Spring.application_root = "spec/dummy"
@@ -2,26 +2,26 @@ class CreateAlchemyUsers < ActiveRecord::Migration[4.2]
2
2
  def up
3
3
  return if table_exists?(:alchemy_users)
4
4
  create_table "alchemy_users" do |t|
5
- t.string "firstname"
6
- t.string "lastname"
7
- t.string "login"
8
- t.string "email"
9
- t.string "language"
10
- t.string "encrypted_password", limit: 128, default: "", null: false
11
- t.string "password_salt", limit: 128, default: "", null: false
12
- t.integer "sign_in_count", default: 0, null: false
13
- t.integer "failed_attempts", default: 0, null: false
5
+ t.string "firstname"
6
+ t.string "lastname"
7
+ t.string "login"
8
+ t.string "email"
9
+ t.string "language"
10
+ t.string "encrypted_password", limit: 128, default: "", null: false
11
+ t.string "password_salt", limit: 128, default: "", null: false
12
+ t.integer "sign_in_count", default: 0, null: false
13
+ t.integer "failed_attempts", default: 0, null: false
14
14
  t.datetime "last_request_at"
15
15
  t.datetime "current_sign_in_at"
16
16
  t.datetime "last_sign_in_at"
17
- t.string "current_sign_in_ip"
18
- t.string "last_sign_in_ip"
19
- t.datetime "created_at", null: false
20
- t.datetime "updated_at", null: false
21
- t.integer "creator_id"
22
- t.integer "updater_id"
23
- t.text "cached_tag_list"
24
- t.string "reset_password_token"
17
+ t.string "current_sign_in_ip"
18
+ t.string "last_sign_in_ip"
19
+ t.datetime "created_at", null: false
20
+ t.datetime "updated_at", null: false
21
+ t.integer "creator_id"
22
+ t.integer "updater_id"
23
+ t.text "cached_tag_list"
24
+ t.string "reset_password_token"
25
25
  t.datetime "reset_password_sent_at"
26
26
  end
27
27
 
@@ -1,24 +1,24 @@
1
- require 'alchemy_cms'
2
- require 'devise'
1
+ require "alchemy_cms"
2
+ require "devise"
3
3
 
4
4
  module Alchemy
5
5
  module Devise
6
6
  class Engine < ::Rails::Engine
7
7
  isolate_namespace Alchemy
8
- engine_name 'alchemy_devise'
8
+ engine_name "alchemy_devise"
9
9
 
10
10
  initializer "alchemy_devise.user_class", before: "alchemy.userstamp" do
11
11
  Alchemy.user_class_name = "Alchemy::User"
12
12
  end
13
13
 
14
- initializer 'alchemy_devise.assets' do |app|
14
+ initializer "alchemy_devise.assets" do |app|
15
15
  app.config.assets.precompile += [
16
- 'alchemy-devise.css'
16
+ "alchemy-devise.css"
17
17
  ]
18
18
  end
19
19
 
20
20
  config.to_prepare do
21
- require_relative '../../../app/controllers/alchemy/base_controller_extension.rb'
21
+ require_relative "../../../app/controllers/alchemy/base_controller_extension"
22
22
  end
23
23
  end
24
24
  end
@@ -4,25 +4,25 @@ FactoryBot.define do
4
4
  factory :alchemy_user, class: Alchemy::User do
5
5
  sequence(:login) { |n| "john_#{n}.doe" }
6
6
  sequence(:email) { |n| "john_#{n}@doe.com" }
7
- firstname { 'John' }
8
- lastname { 'Doe' }
9
- password { 's3cr3t' }
10
- password_confirmation { 's3cr3t' }
7
+ firstname { "John" }
8
+ lastname { "Doe" }
9
+ password { "s3cr3t" }
10
+ password_confirmation { "s3cr3t" }
11
11
 
12
12
  factory :alchemy_admin_user do
13
- alchemy_roles { 'admin' }
13
+ alchemy_roles { "admin" }
14
14
  end
15
15
 
16
16
  factory :alchemy_member_user do
17
- alchemy_roles { 'member' }
17
+ alchemy_roles { "member" }
18
18
  end
19
19
 
20
20
  factory :alchemy_author_user do
21
- alchemy_roles { 'author' }
21
+ alchemy_roles { "author" }
22
22
  end
23
23
 
24
24
  factory :alchemy_editor_user do
25
- alchemy_roles { 'editor' }
25
+ alchemy_roles { "editor" }
26
26
  end
27
27
  end
28
28
  end
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
  module Devise
3
- VERSION = "6.1.0"
3
+ VERSION = "6.3.0"
4
4
  end
5
5
  end
@@ -6,12 +6,12 @@ module Alchemy
6
6
  # === Default modules
7
7
  #
8
8
  # [
9
- #. :database_authenticatable,
9
+ # . :database_authenticatable,
10
10
  # :trackable,
11
11
  # :validatable,
12
12
  # :timeoutable,
13
13
  # :recoverable
14
- #. ]
14
+ # . ]
15
15
  #
16
16
  # If you want to add additional modules into the Alchemy user class append
17
17
  # them to this collection in an initializer in your app.
@@ -3,18 +3,18 @@ module Alchemy
3
3
  module Generators
4
4
  class InstallGenerator < Rails::Generators::Base
5
5
  desc "Installs Alchemy Devise based authentication into your app."
6
- source_root File.expand_path('templates', File.dirname(__FILE__))
6
+ source_root File.expand_path("templates", File.dirname(__FILE__))
7
7
 
8
8
  def copy_devise_config
9
- template 'devise.rb.tt', 'config/initializers/devise.rb'
9
+ template "devise.rb.tt", "config/initializers/devise.rb"
10
10
  end
11
11
 
12
12
  def add_migrations
13
- run 'bundle exec rake alchemy_devise:install:migrations'
13
+ run "bundle exec rake alchemy_devise:install:migrations"
14
14
  end
15
15
 
16
16
  def run_migrations
17
- run 'bundle exec rake db:migrate'
17
+ run "bundle exec rake db:migrate"
18
18
  end
19
19
 
20
20
  def append_assets
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-devise
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 6.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-20 00:00:00.000000000 Z
11
+ date: 2023-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alchemy_cms
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 6.0.0
19
+ version: 6.1.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '7'
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 6.0.0
29
+ version: 6.1.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '7'
@@ -112,14 +112,14 @@ dependencies:
112
112
  requirements:
113
113
  - - "~>"
114
114
  - !ruby/object:Gem::Version
115
- version: 5.1.2
115
+ version: 6.0.1
116
116
  type: :development
117
117
  prerelease: false
118
118
  version_requirements: !ruby/object:Gem::Requirement
119
119
  requirements:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
- version: 5.1.2
122
+ version: 6.0.1
123
123
  - !ruby/object:Gem::Dependency
124
124
  name: simplecov
125
125
  requirement: !ruby/object:Gem::Requirement
@@ -210,7 +210,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  - !ruby/object:Gem::Version
211
211
  version: '0'
212
212
  requirements: []
213
- rubygems_version: 3.3.26
213
+ rubygems_version: 3.4.15
214
214
  signing_key:
215
215
  specification_version: 4
216
216
  summary: Devise based user authentication for AlchemyCMS.