alchemy-devise 7.1.2 → 7.3.0

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: 7dba17f7796f78c02350259cc911af0f7a282da96a067350e68e07a2af10643e
4
- data.tar.gz: 115b4571d47e99323d9d68d7b1ecd5347eb8ac3a0e42fd503d378cd0e237c192
3
+ metadata.gz: 50fb7555da0609c974b6455982abcc8cd18e023ab14bca6c8d925c698edca6a5
4
+ data.tar.gz: b5e00e701e89fbd07b9f63886562e0ada6e0daeba1b7c53787b91d0fb65bc844
5
5
  SHA512:
6
- metadata.gz: 5540972780cc1d5c00986f8691890882c48ba95616a693424fa9fee6e78b5a317c09c213693d325b33612a02d746ced546d31b9874717d1d8b22dc2eb71704a7
7
- data.tar.gz: 8f319ab62741f16116de9171d18f84115d2d51a5152507d0dd07f7f56f4c0c3b712c27cbe03fab1c79f0c980b76baf5254e749f44df5094de3ac94ff483693ef
6
+ metadata.gz: cf3b05ce4e55d5bcedd941acbb7736a1ffe3b377d52c4084ee0bf61b387c9bc343cf07d3f21e2fa4362693fdddd3a8d7c643b71fe2d83117acfe95c43cfec90c
7
+ data.tar.gz: bea6ab34bc7216a89a835fa916dbe08b03ebb5e66db087e1cd9d38908722971cb909e370581bf0ddab822dbc5434370c1637973822d29c4391890899c3024d15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 7.3.0 (2024-09-06)
4
+
5
+ - Use new resource_table component for user list [#213](https://github.com/AlchemyCMS/alchemy-devise/pull/213) ([tvdeyen](https://github.com/tvdeyen))
6
+ - Compile CSS into Gem [#211](https://github.com/AlchemyCMS/alchemy-devise/pull/211) ([tvdeyen](https://github.com/tvdeyen))
7
+
8
+ ## 7.2.0 (2024-06-07)
9
+
10
+ - Update Devise config for Turbo [#209](https://github.com/AlchemyCMS/alchemy-devise/pull/209) ([tvdeyen](https://github.com/tvdeyen))
11
+ - Disable Turbo Drive on login form [#203](https://github.com/AlchemyCMS/alchemy-devise/pull/203) ([tvdeyen](https://github.com/tvdeyen))
12
+
3
13
  ## 7.1.2 (2024-02-29)
4
14
 
5
15
  - Allow setting a layout for user_sessions and passwords controller [#127](https://github.com/AlchemyCMS/alchemy-devise/pull/127) ([robinboening](https://github.com/robinboening))
@@ -0,0 +1 @@
1
+ body.user_sessions,body.passwords{background-color:var(--color-blue_dark);color:var(--color-white)}body.user_sessions a,body.passwords a{color:var(--color-white)}body.user_sessions #errors,body.user_sessions .message.info,body.passwords #errors,body.passwords .message.info{border-color:rgba(0,0,0,0)}body.user_sessions #errors,body.passwords #errors{margin-left:157px}#logo{width:275px;height:auto;margin:0 0 1em 164px}.login_signup_box{position:absolute;width:450px;top:50%;left:50%;transform:translate(-60%, -50%)}.no-js .login_signup_box{display:none}.login_signup_box .message{margin-left:157px}.login_signup_box .link{text-align:right}.login_signup_box button.secondary{color:var(--color-white);border-color:var(--color-white)}form.user_roles .checkbox{display:inline-block;width:50%}/*# sourceMappingURL=alchemy-devise.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../stylesheets/alchemy-devise/login.scss","../stylesheets/alchemy-devise/users.scss"],"names":[],"mappings":"AAAA,kCAEE,wCACA,yBAEA,sCACE,yBAGF,gHAEE,2BAGF,kDACE,kBAIJ,MACE,YACA,YACA,qBAGF,kBACE,kBACA,YACA,QACA,SACA,gCAEA,yBACE,aAGF,2BACE,kBAGF,wBACE,iBAGF,mCACE,yBACA,gCC5CF,0BACE,qBACA","file":"alchemy-devise.css"}
@@ -1,10 +1,10 @@
1
1
  body.user_sessions,
2
2
  body.passwords {
3
- background-color: $main-menu-bg-color;
4
- color: $white;
3
+ background-color: var(--color-blue_dark);
4
+ color: var(--color-white);
5
5
 
6
6
  a {
7
- color: $white;
7
+ color: var(--color-white);
8
8
  }
9
9
 
10
10
  #errors,
@@ -43,7 +43,7 @@ body.passwords {
43
43
  }
44
44
 
45
45
  button.secondary {
46
- color: $white;
47
- border-color: $white;
46
+ color: var(--color-white);
47
+ border-color: var(--color-white);
48
48
  }
49
49
  }
@@ -1,2 +1 @@
1
- @import "alchemy/defaults";
2
- @import "alchemy-devise/*";
1
+ @import "alchemy-devise/login";
@@ -47,6 +47,10 @@ module Alchemy
47
47
  ]
48
48
  end
49
49
 
50
+ def ransortable_attributes(_auth_object = nil)
51
+ %w[last_sign_in_at]
52
+ end
53
+
50
54
  alias_method :searchable_alchemy_resource_attributes, :ransackable_attributes
51
55
 
52
56
  def ransackable_associations(_auth_object = nil)
@@ -1,3 +1,7 @@
1
+ <%= content_for :stylesheets do %>
2
+ <%= stylesheet_link_tag "alchemy-devise" %>
3
+ <% end %>
4
+
1
5
  <div class="login_signup_box">
2
6
  <%= image_tag 'alchemy/alchemy-logo.svg', id: 'logo' %>
3
7
  <% if @user.errors.blank? %>
@@ -1,3 +1,7 @@
1
+ <%= content_for :stylesheets do %>
2
+ <%= stylesheet_link_tag "alchemy-devise" %>
3
+ <% end %>
4
+
1
5
  <div class="login_signup_box">
2
6
  <%= image_tag 'alchemy/alchemy-logo.svg', id: 'logo' %>
3
7
  <% if @user.errors.blank? %>
@@ -1,6 +1,10 @@
1
+ <%= content_for :stylesheets do %>
2
+ <%= stylesheet_link_tag "alchemy-devise" %>
3
+ <% end %>
4
+
1
5
  <div class="login_signup_box">
2
6
  <%= image_tag 'alchemy/alchemy-logo.svg', id: 'logo' %>
3
- <%= alchemy_form_for :user, url: {action: 'create'}, id: 'login' do |f| %>
7
+ <%= alchemy_form_for :user, url: {action: 'create'}, id: 'login', data: { turbo: false } do |f| %>
4
8
  <%= f.input Devise.authentication_keys.first, autofocus: true %>
5
9
  <%= f.input :password %>
6
10
  <div class="input link">
@@ -13,11 +17,3 @@
13
17
  </div>
14
18
  <% end %>
15
19
  </div>
16
-
17
- <%- content_for :javascripts do -%>
18
- <script type="text/javascript" charset="utf-8">
19
- jQuery(function($) {
20
- $('#user_login').focus();
21
- });
22
- </script>
23
- <%- end -%>
@@ -0,0 +1,34 @@
1
+ <%= render Alchemy::Admin::Resource::Table.new(@users, query: @query) do |table| %>
2
+ <% table.icon_column do |user| %>
3
+ <%= render_icon(:user, style: user.logged_in? ? "solid" : "regular") %>
4
+ <% end %>
5
+ <% table.column :login, sortable: true do |user| %>
6
+ <% if can?(:edit, user) %>
7
+ <%= link_to_dialog user.login,
8
+ alchemy.edit_admin_user_path(user), {
9
+ title: Alchemy.t(:edit_user),
10
+ overflow: true,
11
+ size: "430x560"
12
+ },
13
+ title: Alchemy.t(:edit_user) %>
14
+ <% else %>
15
+ <%= user.login %>
16
+ <% end %>
17
+ <% end %>
18
+ <% table.column :firstname, class_name: "name", sortable: true %>
19
+ <% table.column :lastname, sortable: true %>
20
+ <% table.column :email, sortable: true %>
21
+ <% table.column :language do |user| %>
22
+ <%= Alchemy.t(user.language, scope: :translations, default: Alchemy.t(:unknown)) %>
23
+ <% end %>
24
+ <% table.column :last_sign_in_at, sortable: true do |user| %>
25
+ <%= user.last_sign_in_at.present? ? l(user.last_sign_in_at, format: :"alchemy.default") : Alchemy.t(:unknown) %>
26
+ <% end %>
27
+ <% table.column :role, header: Alchemy::User.human_attribute_name(:alchemy_roles) do |user| %>
28
+ <%= user.human_roles_string %>
29
+ <% end %>
30
+ <% table.delete_button tooltip: Alchemy.t(:delete_user), confirm_message: Alchemy.t(:confirm_to_delete_user) %>
31
+ <% table.edit_button tooltip: Alchemy.t(:edit_user), dialog_size: "430x560" %>
32
+ <% end %>
33
+
34
+ <%= paginate @users, theme: "alchemy" %>
@@ -0,0 +1,28 @@
1
+ <table class="list" id="user_list">
2
+ <thead>
3
+ <tr>
4
+ <th class="icon"></th>
5
+ <th class="login">
6
+ <%= sort_link @query, :login, hide_indicator: true %>
7
+ </th>
8
+ <th class="name">
9
+ <%= sort_link @query, :firstname, hide_indicator: true %>
10
+ </th>
11
+ <th>
12
+ <%= sort_link @query, :lastname, hide_indicator: true %>
13
+ </th>
14
+ <th class="email">
15
+ <%= sort_link @query, :email, hide_indicator: true %>
16
+ </th>
17
+ <th><%= Alchemy::User.human_attribute_name('language') %></th>
18
+ <th>
19
+ <%= sort_link @query, :last_sign_in_at, hide_indicator: true %>
20
+ </th>
21
+ <th class="role"><%= Alchemy::User.human_attribute_name('roles') %></th>
22
+ <th class="tools"></th>
23
+ </tr>
24
+ </thead>
25
+ <tbody>
26
+ <%= render partial: "user", collection: @users %>
27
+ </tbody>
28
+ </table>
@@ -1,3 +1,7 @@
1
+ <%= content_for :stylesheets do %>
2
+ <%= stylesheet_link_tag "alchemy-devise" %>
3
+ <% end %>
4
+
1
5
  <%= content_for :toolbar do %>
2
6
  <%= toolbar_button(
3
7
  icon: :plus,
@@ -16,37 +20,14 @@
16
20
  <% end %>
17
21
 
18
22
  <div id="archive_all" class="resources-table-wrapper">
19
- <%= render "alchemy/admin/resources/table_header" %>
20
23
  <% if @users.any? %>
24
+ <%= render "alchemy/admin/resources/table_header" %>
21
25
 
22
- <table class="list" id="user_list">
23
- <thead>
24
- <tr>
25
- <th class="icon"></th>
26
- <th class="login">
27
- <%= sort_link @query, :login, hide_indicator: true %>
28
- </th>
29
- <th class="name">
30
- <%= sort_link @query, :firstname, hide_indicator: true %>
31
- </th>
32
- <th>
33
- <%= sort_link @query, :lastname, hide_indicator: true %>
34
- </th>
35
- <th class="email">
36
- <%= sort_link @query, :email, hide_indicator: true %>
37
- </th>
38
- <th><%= Alchemy::User.human_attribute_name('language') %></th>
39
- <th>
40
- <%= sort_link @query, :last_sign_in_at, hide_indicator: true %>
41
- </th>
42
- <th class="role"><%= Alchemy::User.human_attribute_name('roles') %></th>
43
- <th class="tools"></th>
44
- </tr>
45
- </thead>
46
- <tbody>
47
- <%= render partial: 'alchemy/admin/users/user', collection: @users %>
48
- </tbody>
49
- </table>
26
+ <% if Alchemy::Admin.const_defined?(:Resource) %>
27
+ <%= render "resource_table" %>
28
+ <% else %>
29
+ <%= render "table" %>
30
+ <% end %>
50
31
 
51
32
  <%= paginate @users, theme: 'alchemy' %>
52
33
 
@@ -1,3 +1,7 @@
1
+ <%= content_for :stylesheets do %>
2
+ <%= stylesheet_link_tag "alchemy-devise" %>
3
+ <% end %>
4
+
1
5
  <div class="login_signup_box">
2
6
  <%= image_tag 'alchemy/alchemy-logo.svg', id: 'logo' %>
3
7
  <%= render_message do %>
@@ -1,5 +1,5 @@
1
1
  module Alchemy
2
2
  module Devise
3
- VERSION = "7.1.2"
3
+ VERSION = "7.3.0"
4
4
  end
5
5
  end
@@ -16,12 +16,6 @@ module Alchemy
16
16
  def run_migrations
17
17
  run "bundle exec rake db:migrate"
18
18
  end
19
-
20
- def append_assets
21
- insert_into_file "vendor/assets/stylesheets/alchemy/admin/all.css",
22
- "\n *= require alchemy/admin/alchemy-devise",
23
- after: " *= require alchemy/admin"
24
- end
25
19
  end
26
20
  end
27
21
  end
@@ -1,5 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # Assuming you have not yet modified this file, each configuration option below
4
+ # is set to its default value. Note that some are commented out while others
5
+ # are not: uncommented lines are intended to protect your configuration from
6
+ # breaking changes in upgrades (i.e., in the event that future versions of
7
+ # Devise change the default values for those options).
8
+ #
3
9
  # Use this hook to configure devise mailer, warden hooks and so forth.
4
10
  # Many of these configuration options can be set straight in your model.
5
11
  Devise.setup do |config|
@@ -68,7 +74,10 @@ Devise.setup do |config|
68
74
  # Tell if authentication through HTTP Auth is enabled. False by default.
69
75
  # It can be set to an array that will enable http authentication only for the
70
76
  # given strategies, for example, `config.http_authenticatable = [:database]` will
71
- # enable it only for database authentication. The supported strategies are:
77
+ # enable it only for database authentication.
78
+ # For API-only applications to support authentication "out-of-the-box", you will likely want to
79
+ # enable this with :database unless you are using a custom strategy.
80
+ # The supported strategies are:
72
81
  # :database = Support basic authentication with authentication key + password
73
82
  config.http_authenticatable = true
74
83
 
@@ -103,15 +112,18 @@ Devise.setup do |config|
103
112
  # config.reload_routes = true
104
113
 
105
114
  # ==> Configuration for :database_authenticatable
106
- # For bcrypt, this is the cost for hashing the password and defaults to 11. If
115
+ # For bcrypt, this is the cost for hashing the password and defaults to 12. If
107
116
  # using other algorithms, it sets how many times you want the password to be hashed.
117
+ # The number of stretches used for generating the hashed password are stored
118
+ # with the hashed password. This allows you to change the stretches without
119
+ # invalidating existing passwords.
108
120
  #
109
121
  # Limiting the stretches to just one in testing will increase the performance of
110
122
  # your test suite dramatically. However, it is STRONGLY RECOMMENDED to not use
111
123
  # a value less than 10 in other environments. Note that, for bcrypt (the default
112
124
  # algorithm), the cost increases exponentially with the number of stretches (e.g.
113
125
  # a value of 20 is already extremely slow: approx. 60 seconds for 1 calculation).
114
- config.stretches = Rails.env.test? ? 1 : 11
126
+ config.stretches = Rails.env.test? ? 1 : 12
115
127
 
116
128
  # Set up a pepper to generate the hashed password.
117
129
  # config.pepper = '<%= SecureRandom.hex(64) %>'
@@ -244,14 +256,14 @@ Devise.setup do |config|
244
256
 
245
257
  # ==> Navigation configuration
246
258
  # Lists the formats that should be treated as navigational. Formats like
247
- # :html, should redirect to the sign in page when the user does not have
259
+ # :html should redirect to the sign in page when the user does not have
248
260
  # access, but formats like :xml or :json, should return 401.
249
261
  #
250
262
  # If you have any extra navigational formats, like :iphone or :mobile, you
251
263
  # should add them to the navigational formats lists.
252
264
  #
253
265
  # The "*/*" below is required to match Internet Explorer requests.
254
- # config.navigational_formats = ['*/*', :html]
266
+ # config.navigational_formats = ['*/*', :html, :turbo_stream]
255
267
 
256
268
  # The default HTTP method used to sign out a resource. Default is :delete.
257
269
  config.sign_out_via = :delete
@@ -284,12 +296,14 @@ Devise.setup do |config|
284
296
  # so you need to do it manually. For the users scope, it would be:
285
297
  # config.omniauth_path_prefix = '/my_engine/users/auth'
286
298
 
287
- # ==> Turbolinks configuration
288
- # If your app is using Turbolinks, Turbolinks::Controller needs to be included to make redirection work correctly:
289
- #
290
- # ActiveSupport.on_load(:devise_failure_app) do
291
- # include Turbolinks::Controller
292
- # end
299
+ # ==> Hotwire/Turbo configuration
300
+ # When using Devise with Hotwire/Turbo, the http status for error responses
301
+ # and some redirects must match the following. The default in Devise for existing
302
+ # apps is `200 OK` and `302 Found` respectively, but new apps are generated with
303
+ # these new defaults that match Hotwire/Turbo behavior.
304
+ # Note: These might become the new default in future versions of Devise.
305
+ config.responder.error_status = :unprocessable_entity
306
+ config.responder.redirect_status = :see_other
293
307
 
294
308
  # ==> Configuration for :registerable
295
309
 
metadata CHANGED
@@ -1,55 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy-devise
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.2
4
+ version: 7.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: 2024-02-29 00:00:00.000000000 Z
11
+ date: 2024-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: alchemy_cms
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 7.0.0
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '8'
19
+ version: '7.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 7.0.0
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: '8'
26
+ version: '7.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: devise
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 4.7.1
40
- - - "<"
31
+ - - "~>"
41
32
  - !ruby/object:Gem::Version
42
- version: '5'
33
+ version: '4.9'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 4.7.1
50
- - - "<"
38
+ - - "~>"
51
39
  - !ruby/object:Gem::Version
52
- version: '5'
40
+ version: '4.9'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: capybara
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -144,10 +132,10 @@ files:
144
132
  - CHANGELOG.md
145
133
  - LICENSE
146
134
  - README.md
135
+ - app/assets/builds/alchemy-devise.css
136
+ - app/assets/builds/alchemy-devise.css.map
147
137
  - app/assets/stylesheets/alchemy-devise.scss
148
138
  - app/assets/stylesheets/alchemy-devise/login.scss
149
- - app/assets/stylesheets/alchemy-devise/users.scss
150
- - app/assets/stylesheets/alchemy/admin/alchemy-devise.css
151
139
  - app/controllers/alchemy/admin/passwords_controller.rb
152
140
  - app/controllers/alchemy/admin/user_sessions_controller.rb
153
141
  - app/controllers/alchemy/admin/users_controller.rb
@@ -158,6 +146,8 @@ files:
158
146
  - app/views/alchemy/admin/passwords/new.html.erb
159
147
  - app/views/alchemy/admin/user_sessions/new.html.erb
160
148
  - app/views/alchemy/admin/users/_fields.html.erb
149
+ - app/views/alchemy/admin/users/_resource_table.html.erb
150
+ - app/views/alchemy/admin/users/_table.html.erb
161
151
  - app/views/alchemy/admin/users/_user.html.erb
162
152
  - app/views/alchemy/admin/users/edit.html.erb
163
153
  - app/views/alchemy/admin/users/index.html.erb
@@ -210,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
200
  - !ruby/object:Gem::Version
211
201
  version: '0'
212
202
  requirements: []
213
- rubygems_version: 3.4.19
203
+ rubygems_version: 3.5.16
214
204
  signing_key:
215
205
  specification_version: 4
216
206
  summary: Devise based user authentication for AlchemyCMS.
@@ -1,3 +0,0 @@
1
- /*
2
- *= require alchemy-devise
3
- */
@@ -1,7 +0,0 @@
1
- form {
2
-
3
- &.user_roles .checkbox {
4
- display: inline-block;
5
- width: 50%;
6
- }
7
- }