wobauth 5.0.2 → 6.0.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: 2500bebf49f08404ae7184155a6f01f82ca0aec3851932e02475fb17d58e5782
4
- data.tar.gz: a09aa25804d3f786183378606d1335e1681e1830c0f4bff0ce0fea87b1cc8e0a
3
+ metadata.gz: 94799c687b140c37cdbf5358d2f13f9ef3c0798767b2e3dd319806ba0ebbfc13
4
+ data.tar.gz: 292bb7095b2d67fd2be1a757b9c9296280e3c82e0c3bb8ccc13bcb057bde4fa4
5
5
  SHA512:
6
- metadata.gz: 705ff44fd69b90cbb7410b5aaf6fb101c9ccbd9680a8250c57e595c570957f43c21fb99c7df0b57179196e1172d40628dd64d1af52a3595ad7fb4de31b5e5ab8
7
- data.tar.gz: 1e01f8526e8615957dae51d02d1de285a4e17b498fdbf2793a98d50da0006da887175ce93893d37202a8f0fbb6581f3ea45e99492e714e16c95f83f84701ecb4
6
+ metadata.gz: 0c1181fccfea759cd6fedd3cbc9f358fd2ca7451505226334da6989deb963d349e4081270234125cd9484ec148dbb69bf3c5bbcc7d32714541164a64034ea1e3
7
+ data.tar.gz: ffcf32bf7ece533043f814bbc50a6e2eb82567ba827881f660553c5e1f51cfa4612896a72157cd4e89caa8ce6b9f7d09dc8859124a97e081d360ef2a9cf7f000
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License (MIT)
2
2
 
3
- Copyright (c) 2014-2020 Wolfgang Barth
3
+ Copyright (c) 2014-2021 Wolfgang Barth
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -30,21 +30,29 @@ wobauth 3.x uses bootstrap v4 and font-awesome, starting with Rails 5.1
30
30
  (may work with Rails 5.0, but not tested)
31
31
  wobauth 4.x works with sprockets v4.
32
32
  wobauth 5.x works with rails 6.x and is designed for autoloading via zeitwerk.
33
+ wobauth 6.x works with rails >= 6.1 and uses bootstrap v5.
33
34
 
34
35
  Requirements
35
36
  ------------
36
37
 
38
+ ### Rails >= 6.0; autoload = :zeitwerk; webpacker; stimulusjs
39
+
40
+ | version | rails | ruby | bootstrap | icons | wobapphelpers |
41
+ |------------|-------|--------|-----------|-----------------|---------------|
42
+ | master(6.x)| >=6.1 | >= 2.7 | v5 | fontawesome 5.x | master (5.x) |
43
+ | 5-1-stable | >=6.0 | >= 2.6 | v4 | fontawesome 5.x | 4-stable |
44
+
37
45
  ### Rails >= 6.0, autoload = :zeitwerk
38
46
 
39
- | branch | rails | ruby | bootstrap | icons | wobapphelpers |
47
+ | version | rails | ruby | bootstrap | icons | wobapphelpers |
40
48
  |------------|-------|--------|-----------|-----------------|---------------|
41
- | master(5.x)| >=6.0 | >= 2.6 | v4 | fontawesome 5.x | master (4.x) |
49
+ | 5-stable | >=6.0 | >= 2.6 | v4 | fontawesome 5.x | 4-stable |
42
50
 
43
51
  ### Rails <= 5.2, autoload = :classic
44
52
 
45
53
  | branch | rails | ruby | bootstrap | icons | wobapphelpers |
46
54
  |------------|-------|--------|-----------|-----------------|---------------|
47
- | 4-0-stable | >=5.1 | >= 2.3 | v4 | fontawesome 5.x | master (4.x) |
55
+ | 4-0-stable | >=5.1 | >= 2.3 | v4 | fontawesome 5.x | 4-stable |
48
56
  | 3-0-stable | >=5.1 | >= 2.3 | v4 | fontawesome 4.7 | 3-0-stable |
49
57
  | 2-0-stable | 5.0 | >= 2.2 | v3 | glyphicons | 2-0-stable |
50
58
  | 1-0-stable | 4.2 | >= 2.0 | v3 | glyphicons | 1-0-stable |
@@ -57,13 +65,13 @@ Installation
57
65
  Add wobauth to your Gemfile:
58
66
 
59
67
  ```ruby
68
+ gem 'wobauth', git: 'https://github.com/swobspace/wobauth.git', branch: 'master'
60
69
  gem 'wobauth', '~> 5.0.0'
61
70
  gem 'wobauth', '~> 4.0.0'
62
71
  gem 'wobauth', '~> 3.4.8'
63
72
  gem 'wobauth', git: 'https://github.com/swobspace/wobauth.git', branch: '3-0-stable'
64
73
  gem 'wobauth', git: 'https://github.com/swobspace/wobauth.git', branch: '2-0-stable'
65
74
  gem 'wobauth', git: 'https://github.com/swobspace/wobauth.git', branch: '1-0-stable'
66
-
67
75
  ```
68
76
  Starting with v3.4 gems are published to rubygems.org.
69
77
 
@@ -181,7 +189,7 @@ included in this rails engine.
181
189
  Licence
182
190
  -------
183
191
 
184
- wobauth Copyright (C) 2014-2020 Wolfgang Barth
192
+ wobauth Copyright (C) 2014-2021 Wolfgang Barth
185
193
 
186
194
  MIT license, see [LICENSE](LICENSE)
187
195
 
@@ -17,17 +17,27 @@ module Wobauth
17
17
  return Result.new(success: false, error_messages: ["no query given"], ad_users: [])
18
18
  end
19
19
 
20
- ldap = Wobaduser::LDAP.new(ldap_options: ldap_options)
21
- if ldap.errors.any?
22
- return Result.new(success: false, error_messages: ldap.errors, ad_users: [])
20
+ errors = []
21
+ ad_users = []
22
+ ldap_options.each do |ldapopts|
23
+ ldap = Wobaduser::LDAP.new(ldap_options: ldapopts)
24
+ if ldap.errors.any?
25
+ errors += ldap.errors
26
+ next
27
+ end
28
+ search = Wobaduser::User.search(ldap: ldap, filter: user_filter(query))
29
+ if search.success?
30
+ ad_users += search.entries
31
+ else
32
+ errors += search.errors
33
+ end
23
34
  end
24
35
 
25
- search = Wobaduser::User.search(ldap: ldap, filter: user_filter(query))
26
- if search.success?
27
- result = Result.new(success: true, error_messages: [], ad_users: search.entries)
36
+ if errors.any?
37
+ return Result.new(success: false, error_messages: errors, ad_users: ad_users)
28
38
  else
29
- result = Result.new(success: false, error_messages: search.errors, ad_users: [])
30
- end
39
+ result = Result.new(success: true, error_messages: errors, ad_users: ad_users)
40
+ end
31
41
  end
32
42
 
33
43
  private
@@ -50,5 +60,13 @@ module Wobauth
50
60
  filter += ")"
51
61
  filter = Net::LDAP::Filter.construct(filter)
52
62
  end
63
+
64
+ def ldap_options
65
+ if @ldap_options.kind_of? Hash
66
+ [@ldap_options]
67
+ else
68
+ @ldap_options
69
+ end
70
+ end
53
71
  end
54
- end
72
+ end
@@ -1,6 +1,6 @@
1
1
  <div class="container">
2
2
  <%= simple_form_for(resource, as: resource_name, url: session_path(resource_name),
3
- html: { class: 'card'}) do |f| %>
3
+ html: { class: 'form-horizontal card'}) do |f| %>
4
4
  <div class="card-header">
5
5
  <h3>Login</h3>
6
6
  </div>
@@ -2,7 +2,7 @@
2
2
  <div class="card-body p-1 m-1">
3
3
  <%= form_tag( url_for(:action => 'index'),
4
4
  :class => "") do -%>
5
- <div class="form-group">
5
+ <div class="mb-3">
6
6
  <label>Name, Vorname oder E-Mail-Adresse:</label>
7
7
  <%= text_field_tag :query, '', class: 'form-control'-%>
8
8
  </div>
@@ -11,59 +11,65 @@
11
11
  </div>
12
12
  <br>
13
13
 
14
- <table id="adusers" class="table table-bordered table-striped dataTable" role="datatable">
15
- <thead>
16
- <tr>
17
- <th><%= t('attributes.sn') %></th>
18
- <th><%= t('attributes.givenname') %></th>
19
- <th><%= t('attributes.ort') %></th>
20
- <th><%= t('attributes.plz') %></th>
21
- <th><%= t('attributes.streetaddress') %></th>
22
- <th><%= t('attributes.department') %></th>
23
- <th><%= t('attributes.company') %></th>
24
- <th><%= t('attributes.mail') %></th>
25
- <th><%= t('attributes.telephonenumber') %></th>
26
- <th><%= t('attributes.facsimiletelephonenumber') %></th>
27
- <th><%= t('attributes.mobile') %></th>
28
- <th><%= t('attributes.username') %></th>
29
- <th><%= t('wobauth.action') %></th>
30
- </tr>
31
- </thead>
32
- <tfoot>
33
- <tr>
34
- <th></th>
35
- <th></th>
36
- <th></th>
37
- <th></th>
38
- <th></th>
39
- <th></th>
40
- <th></th>
41
- <th></th>
42
- <th></th>
43
- <th></th>
44
- <th></th>
45
- <th></th>
46
- <th></th>
47
- </tr>
48
- </tfoot>
14
+ <div data-controller="datatables">
15
+ <%= content_tag :table, id: :adusers, role: :woauth_datatable,
16
+ class: "table table-bordered table-striped",
17
+ data: {
18
+ "datatables-target": 'datatable',
19
+ } do %>
20
+ <thead>
21
+ <tr>
22
+ <th><%= t('attributes.sn') %></th>
23
+ <th><%= t('attributes.givenname') %></th>
24
+ <th><%= t('attributes.ort') %></th>
25
+ <th><%= t('attributes.plz') %></th>
26
+ <th><%= t('attributes.streetaddress') %></th>
27
+ <th><%= t('attributes.department') %></th>
28
+ <th><%= t('attributes.company') %></th>
29
+ <th><%= t('attributes.mail') %></th>
30
+ <th><%= t('attributes.telephonenumber') %></th>
31
+ <th><%= t('attributes.facsimiletelephonenumber') %></th>
32
+ <th><%= t('attributes.mobile') %></th>
33
+ <th><%= t('attributes.username') %></th>
34
+ <th><%= t('wobauth.action') %></th>
35
+ </tr>
36
+ </thead>
37
+ <tfoot>
38
+ <tr>
39
+ <th></th>
40
+ <th></th>
41
+ <th></th>
42
+ <th></th>
43
+ <th></th>
44
+ <th></th>
45
+ <th></th>
46
+ <th></th>
47
+ <th></th>
48
+ <th></th>
49
+ <th></th>
50
+ <th></th>
51
+ <th></th>
52
+ </tr>
53
+ </tfoot>
49
54
 
50
- <tbody>
51
- <% @ad_users.each do |ad_user| %>
52
- <%= content_tag(:tr, class: aduser_class(Wobauth::User, ad_user)) do %>
53
- <td><%= ad_user.sn %></td>
54
- <td><%= ad_user.givenname %></td>
55
- <td><%= ad_user.l %></td>
56
- <td><%= ad_user.postalcode %></td>
57
- <td><%= ad_user.streetaddress %></td>
58
- <td><%= ad_user.department %></td>
59
- <td><%= ad_user.company %></td>
60
- <td><%= ad_user.mail %></td>
61
- <td><%= ad_user.telephonenumber %></td>
62
- <td><%= ad_user.facsimiletelephonenumber %></td>
63
- <td><%= ad_user.mobile %></td>
64
- <td><%= ad_user.username %></td>
65
- <td><%= new_from_aduser_link(Wobauth::User, ad_user) %></td>
55
+ <tbody>
56
+ <% @ad_users.each do |ad_user| %>
57
+ <%= content_tag(:tr, class: aduser_class(Wobauth::User, ad_user)) do %>
58
+ <td><%= ad_user.sn %></td>
59
+ <td><%= ad_user.givenname %></td>
60
+ <td><%= ad_user.l %></td>
61
+ <td><%= ad_user.postalcode %></td>
62
+ <td><%= ad_user.streetaddress %></td>
63
+ <td><%= ad_user.department %></td>
64
+ <td><%= ad_user.company %></td>
65
+ <td><%= ad_user.mail %></td>
66
+ <td><%= ad_user.telephonenumber %></td>
67
+ <td><%= ad_user.facsimiletelephonenumber %></td>
68
+ <td><%= ad_user.mobile %></td>
69
+ <td><%= ad_user.username %></td>
70
+ <td><%= new_from_aduser_link(Wobauth::User, ad_user) %></td>
71
+ <% end %>
66
72
  <% end %>
67
- <% end %>
68
- </tbody>
69
- </table>
73
+ </tbody>
74
+ <% end %>
75
+ </div>
@@ -1,40 +1,45 @@
1
1
  <h1><%= t('controller.wobauth/authorities') %></h1>
2
2
 
3
- <%= content_tag :table, id: :wobauth_authorities, role: :wobauth_datatable,
4
- class: "table table-bordered table-striped dataTable" do %>
5
- <thead>
6
- <tr>
7
- <th><%= t('attributes.authorizable') %></th>
8
- <th><%= t('attributes.authorizable_type') %></th>
9
- <th><%= t('attributes.role') %></th>
10
- <th><%= t('attributes.authorized_for') %></th>
11
- <th><%= t('attributes.authorized_for_type') %></th>
12
- <th><%= t('attributes.valid_from') %></th>
13
- <th><%= t('attributes.valid_until') %></th>
14
- <th><%= t('wobauth.action') %></th>
15
- </tr>
16
- </thead>
17
- <tbody>
3
+ <div data-controller="datatables">
4
+ <%= content_tag :table, id: :wobauth_authorities, role: :wobauth_datatable,
5
+ class: "table table-bordered table-striped",
6
+ data: {
7
+ "datatables-target": 'datatable',
8
+ } do %>
18
9
 
19
- <% @authorities.each do |authority| %>
20
- <%= content_tag_for(:tr, authority) do %>
21
- <td><%= authority.authorizable %></td>
22
- <td><%= authority.authorizable_type %></td>
23
- <td><%= authority.role %></td>
24
- <td><%= authority.authorized_for %></td>
25
- <td><%= authority.authorized_for_type %></td>
26
- <td><%= authority.valid_from %></td>
27
- <td><%= authority.valid_until %></td>
28
- <td class="nowrap">
29
- <%= show_link [wobauth, authority] %>
30
- <%= edit_link [wobauth, authority] %>
31
- <%= delete_link [wobauth, authority] %>
32
- </td>
33
- <% end %>
34
- <% end %>
35
- </tbody>
36
- <% end %>
10
+ <thead>
11
+ <tr>
12
+ <th><%= t('attributes.authorizable') %></th>
13
+ <th><%= t('attributes.authorizable_type') %></th>
14
+ <th><%= t('attributes.role') %></th>
15
+ <th><%= t('attributes.authorized_for') %></th>
16
+ <th><%= t('attributes.authorized_for_type') %></th>
17
+ <th><%= t('attributes.valid_from') %></th>
18
+ <th><%= t('attributes.valid_until') %></th>
19
+ <th><%= t('wobauth.action') %></th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
37
23
 
24
+ <% @authorities.each do |authority| %>
25
+ <%= content_tag(:tr, id: dom_id(authority), class: dom_class(authority)) do %>
26
+ <td><%= authority.authorizable %></td>
27
+ <td><%= authority.authorizable_type %></td>
28
+ <td><%= authority.role %></td>
29
+ <td><%= authority.authorized_for %></td>
30
+ <td><%= authority.authorized_for_type %></td>
31
+ <td><%= authority.valid_from %></td>
32
+ <td><%= authority.valid_until %></td>
33
+ <td class="nowrap">
34
+ <%= show_link [wobauth, authority] %>
35
+ <%= edit_link [wobauth, authority] %>
36
+ <%= delete_link [wobauth, authority] %>
37
+ </td>
38
+ <% end %>
39
+ <% end %>
40
+ </tbody>
41
+ <% end %>
42
+ </div>
38
43
  <br />
39
44
 
40
45
  <%= back_link %>
@@ -5,31 +5,31 @@
5
5
  <div class="card-body">
6
6
  <table class="table table-sm table-borderless">
7
7
  <tr>
8
- <th class="w-25 text-right"><%= t('attributes.authorizable')%>:</th>
8
+ <th class="w-25 text-end"><%= t('attributes.authorizable')%>:</th>
9
9
  <td><%= @authority.authorizable %></td>
10
10
  </tr>
11
11
  <tr>
12
- <th class="w-25 text-right"><%= t('attributes.authorizable_type')%>:</th>
12
+ <th class="w-25 text-end"><%= t('attributes.authorizable_type')%>:</th>
13
13
  <td><%= @authority.authorizable_type %></td>
14
14
  </tr>
15
15
  <tr>
16
- <th class="w-25 text-right"><%= t('attributes.role')%>:</th>
16
+ <th class="w-25 text-end"><%= t('attributes.role')%>:</th>
17
17
  <td><%= @authority.role %></td>
18
18
  </tr>
19
19
  <tr>
20
- <th class="w-25 text-right"><%= t('attributes.authorized_for')%>:</th>
20
+ <th class="w-25 text-end"><%= t('attributes.authorized_for')%>:</th>
21
21
  <td><%= @authority.authorized_for %></td>
22
22
  </tr>
23
23
  <tr>
24
- <th class="w-25 text-right"><%= t('attributes.authorized_for_type')%>:</th>
24
+ <th class="w-25 text-end"><%= t('attributes.authorized_for_type')%>:</th>
25
25
  <td><%= @authority.authorized_for_type %></td>
26
26
  </tr>
27
27
  <tr>
28
- <th class="w-25 text-right"><%= t('attributes.valid_from')%>:</th>
28
+ <th class="w-25 text-end"><%= t('attributes.valid_from')%>:</th>
29
29
  <td><%= @authority.valid_from %></td>
30
30
  </tr>
31
31
  <tr>
32
- <th class="w-25 text-right"><%= t('attributes.valid_until')%>:</th>
32
+ <th class="w-25 text-end"><%= t('attributes.valid_until')%>:</th>
33
33
  <td><%= @authority.valid_until %></td>
34
34
  </tr>
35
35
  </table>
@@ -8,7 +8,7 @@
8
8
  </thead>
9
9
  <tbody>
10
10
  <% group.memberships.each do |membership| %>
11
- <%= content_tag_for(:tr, membership) do %>
11
+ <%= content_tag(:tr, id: dom_id(membership), class: dom_class(membership)) do %>
12
12
  <td><%= link_to membership.user, wobauth.user_path(membership.user) %></td>
13
13
  <td><%= membership.auto %></td>
14
14
  <td class="nowrap">
@@ -9,7 +9,7 @@
9
9
  </thead>
10
10
  <tbody>
11
11
  <% group.authorities.each do |authority| %>
12
- <%= content_tag_for(:tr, authority) do %>
12
+ <%= content_tag(:tr, id: dom_id(authority), class: dom_id(authority)) do %>
13
13
  <td><%= link_to authority.role, wobauth.role_path(authority.role) %></td>
14
14
  <td><%= authorized_for_link(authority.authorized_for) %></td>
15
15
  <td><%= authority.authorized_for_type %></td>
@@ -1,29 +1,35 @@
1
1
  <h1><%= t('controller.wobauth/groups') %></h1>
2
2
 
3
- <%= content_tag :table, id: :wobauth_groups, role: :wobauth_datatable,
4
- class: "table table-bordered table-striped dataTable" do %>
5
- <thead>
6
- <tr>
7
- <th><%= t('attributes.name') %></th>
8
- <th><%= t('attributes.description') %></th>
9
- <th><%= t('wobauth.action') %></th>
10
- </tr>
11
- </thead>
12
- <tbody>
13
3
 
14
- <% @groups.each do |group| %>
15
- <%= content_tag_for(:tr, group) do %>
16
- <td><%= group.name %></td>
17
- <td><%= group.description %></td>
18
- <td class="nowrap">
19
- <%= show_link [wobauth, group] %>
20
- <%= edit_link [wobauth, group] %>
21
- <%= delete_link [wobauth, group] %>
22
- </td>
4
+ <div data-controller="datatables">
5
+ <%= content_tag :table, id: :wobauth_groups, role: :wobauth_datatable,
6
+ class: "table table-bordered table-striped",
7
+ data: {
8
+ "datatables-target": 'datatable',
9
+ } do %>
10
+ <thead>
11
+ <tr>
12
+ <th><%= t('attributes.name') %></th>
13
+ <th><%= t('attributes.description') %></th>
14
+ <th><%= t('wobauth.action') %></th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
18
+
19
+ <% @groups.each do |group| %>
20
+ <%= content_tag(:tr, id: dom_id(group), class: dom_class(group)) do %>
21
+ <td><%= group.name %></td>
22
+ <td><%= group.description %></td>
23
+ <td class="nowrap">
24
+ <%= show_link [wobauth, group] %>
25
+ <%= edit_link [wobauth, group] %>
26
+ <%= delete_link [wobauth, group] %>
27
+ </td>
28
+ <% end %>
29
+ <% end %>
30
+ </tbody>
23
31
  <% end %>
24
- <% end %>
25
- </tbody>
26
- <% end %>
32
+ </div>
27
33
 
28
34
  <br />
29
35
 
@@ -1,31 +1,36 @@
1
1
  <h1><%= t('controller.wobauth/memberships') %></h1>
2
2
 
3
- <%= content_tag :table, id: :wobauth_memberships, role: :wobauth_datatable,
4
- class: "table table-bordered table-striped dataTable" do %>
5
- <thead>
6
- <tr>
7
- <th><%= t('attributes.user') %></th>
8
- <th><%= t('attributes.group') %></th>
9
- <th><%= t('attributes.auto') %></th>
10
- <th><%= t('wobauth.action') %></th>
11
- </tr>
12
- </thead>
13
- <tbody>
3
+ <div data-controller="datatables">
4
+ <%= content_tag :table, id: :wobauth_memberships, role: :wobauth_datatable,
5
+ class: "table table-bordered table-striped dataTable",
6
+ data: {
7
+ "datatables-target": 'datatable',
8
+ } do %>
9
+ <thead>
10
+ <tr>
11
+ <th><%= t('attributes.user') %></th>
12
+ <th><%= t('attributes.group') %></th>
13
+ <th><%= t('attributes.auto') %></th>
14
+ <th><%= t('wobauth.action') %></th>
15
+ </tr>
16
+ </thead>
17
+ <tbody>
14
18
 
15
- <% @memberships.each do |membership| %>
16
- <%= content_tag_for(:tr, membership) do %>
17
- <td><%= membership.user %></td>
18
- <td><%= membership.group %></td>
19
- <td><%= membership.auto %></td>
20
- <td class="nowrap">
21
- <%= show_link [wobauth, membership] %>
22
- <%= edit_link [wobauth, membership] %>
23
- <%= delete_link [wobauth, membership] %>
24
- </td>
19
+ <% @memberships.each do |membership| %>
20
+ <%= content_tag(:tr, id: dom_id(membership), class: dom_class(membership)) do %>
21
+ <td><%= membership.user %></td>
22
+ <td><%= membership.group %></td>
23
+ <td><%= membership.auto %></td>
24
+ <td class="nowrap">
25
+ <%= show_link [wobauth, membership] %>
26
+ <%= edit_link [wobauth, membership] %>
27
+ <%= delete_link [wobauth, membership] %>
28
+ </td>
29
+ <% end %>
25
30
  <% end %>
26
- <% end %>
27
- </tbody>
28
- <% end %>
31
+ </tbody>
32
+ <% end %>
33
+ </div>
29
34
 
30
35
  <br />
31
36
 
@@ -5,15 +5,15 @@
5
5
  <div class="card-body">
6
6
  <table class="table table-sm table-borderless ">
7
7
  <tr>
8
- <th class="w-25 text-right"><%= t('attributes.user')%>:</th>
8
+ <th class="w-25 text-end"><%= t('attributes.user')%>:</th>
9
9
  <td><%= @membership.user %></td>
10
10
  </tr>
11
11
  <tr>
12
- <th class="w-25 text-right"><%= t('attributes.group')%>:</th>
12
+ <th class="w-25 text-end"><%= t('attributes.group')%>:</th>
13
13
  <td><%= @membership.group %></td>
14
14
  </tr>
15
15
  <tr>
16
- <th class="w-25 text-right"><%= t('attributes.auto')%>:</th>
16
+ <th class="w-25 text-end"><%= t('attributes.auto')%>:</th>
17
17
  <td><%= @membership.auto %></td>
18
18
  </tr>
19
19
  </table>
@@ -1,21 +1,27 @@
1
- <%= content_tag :table, id: :wobauth_role_authorities, role: :wobauth_datatable,
2
- class: "table table-sm table-bordered dataTable" do %>
3
- <thead>
4
- <tr>
5
- <th><%= t('attributes.user') %></th>
6
- <th><%= t('attributes.authorizable_type') %></th>
7
- <th><%= t('attributes.authorized_for') %></th>
8
- <th><%= t('attributes.authorized_for_type') %></th>
9
- </tr>
10
- </thead>
11
- <tbody>
12
- <% authorities.valid(Date.today).each do |authority| %>
13
- <%= content_tag_for(:tr, authority) do %>
14
- <td><%= link_to authority.authorizable, polymorphic_path([wobauth, authority.authorizable]) %></td>
15
- <td><%= authority.authorizable_type %></td>
16
- <td><%= authorized_for_link(authority.authorized_for) %></td>
17
- <td><%= authority.authorized_for_type %></td>
1
+ <div data-controller="datatables">
2
+ <%= content_tag :table, id: :wobauth_role_authorities, role: :wobauth_datatable,
3
+ class: "table table-sm table-bordered",
4
+ data: {
5
+ "datatables-target": 'datatable',
6
+ } do %>
7
+
8
+ <thead>
9
+ <tr>
10
+ <th><%= t('attributes.user') %></th>
11
+ <th><%= t('attributes.authorizable_type') %></th>
12
+ <th><%= t('attributes.authorized_for') %></th>
13
+ <th><%= t('attributes.authorized_for_type') %></th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+ <% authorities.valid(Date.today).each do |authority| %>
18
+ <%= content_tag(:tr, id: dom_id(authority), class: dom_class(authority)) do %>
19
+ <td><%= link_to authority.authorizable, polymorphic_path([wobauth, authority.authorizable]) %></td>
20
+ <td><%= authority.authorizable_type %></td>
21
+ <td><%= authorized_for_link(authority.authorized_for) %></td>
22
+ <td><%= authority.authorized_for_type %></td>
23
+ <% end %>
18
24
  <% end %>
19
- <% end %>
20
- </tbody>
21
- <% end %>
25
+ </tbody>
26
+ <% end %>
27
+ </div>
@@ -1,25 +1,31 @@
1
1
  <h1><%= t('controller.wobauth/roles') %></h1>
2
2
 
3
- <%= content_tag :table, id: :wobauth_roles, role: :wobauth_datatable,
4
- class: "table table-bordered table-striped dataTable" do %>
5
- <thead>
6
- <tr>
7
- <th><%= t('attributes.name') %></th>
8
- <th><%= t('wobauth.action') %></th>
9
- </tr>
10
- </thead>
11
- <tbody>
12
3
 
13
- <% @roles.each do |role| %>
14
- <%= content_tag_for(:tr, role) do %>
15
- <td><%= role.name %></td>
16
- <td class="nowrap">
17
- <%= show_link [wobauth, role] %>
18
- </td>
4
+ <div data-controller="datatables">
5
+ <%= content_tag :table, id: :wobauth_roles, role: :wobauth_datatable,
6
+ class: "table table-bordered table-striped",
7
+ data: {
8
+ "datatables-target": 'datatable',
9
+ } do %>
10
+ <thead>
11
+ <tr>
12
+ <th><%= t('attributes.name') %></th>
13
+ <th><%= t('wobauth.action') %></th>
14
+ </tr>
15
+ </thead>
16
+ <tbody>
17
+
18
+ <% @roles.each do |role| %>
19
+ <%= content_tag(:tr, id: dom_id(role), class: dom_id(role)) do %>
20
+ <td><%= role.name %></td>
21
+ <td class="nowrap">
22
+ <%= show_link [wobauth, role] %>
23
+ </td>
24
+ <% end %>
25
+ <% end %>
26
+ </tbody>
19
27
  <% end %>
20
- <% end %>
21
- </tbody>
22
- <% end %>
28
+ </div>
23
29
 
24
30
  <br />
25
31
 
@@ -1,13 +1,13 @@
1
- <ul class="navbar-nav float-right">
1
+ <ul class="navbar-nav">
2
2
  <li class="nav-item dropdown">
3
- <a href="#" class="nav-link dropdown-toggle" role="button" id="accountNavDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
3
+ <a href="#" class="nav-link dropdown-toggle" role="button" id="accountNavDropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
4
4
  <% if user_signed_in? %>
5
5
  Account
6
6
  <% else %>
7
7
  Login
8
8
  <% end %>
9
9
  </a>
10
- <div class="dropdown-menu dropdown-menu-right" aria-labelledby="accountNavDropdown">
10
+ <div class="dropdown-menu dropdown-menu-end" aria-labelledby="accountNavDropdown">
11
11
  <% unless user_signed_in? %>
12
12
  <% if Wobauth.remote_authentication? %>
13
13
  <%= link_to "Single-Sign-On", wobauth.login_path, class: "dropdown-item" -%>
@@ -1,7 +1,7 @@
1
1
  <% if Wobauth::AdminAbility.new(current_user).can? :navigate, Wobauth::User %>
2
- <ul class="navbar-nav float-left">
2
+ <ul class="navbar-nav">
3
3
  <li class="nav-item dropdown <%= admin_active_class %>">
4
- <a href="#" class="nav-link dropdown-toggle" role="button" id="adminNavDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
4
+ <a href="#" class="nav-link dropdown-toggle" role="button" id="adminNavDropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
5
5
  Admin</a>
6
6
  <div class="dropdown-menu" aria-labelledby="adminNavDropdown">
7
7
  <% ['users', 'groups', 'memberships', 'roles', 'authorities'].each do |ctrlr| %>
@@ -8,7 +8,7 @@
8
8
  </thead>
9
9
  <tbody>
10
10
  <% user.memberships.each do |membership| %>
11
- <%= content_tag_for(:tr, membership) do %>
11
+ <%= content_tag(:tr, id: dom_id(membership), class: dom_class(membership)) do %>
12
12
  <td><%= link_to membership.group, wobauth.group_path(membership.group) %></td>
13
13
 
14
14
  <td><%= membership.auto %></td>
@@ -9,7 +9,7 @@
9
9
  </thead>
10
10
  <tbody>
11
11
  <% user.authorities.each do |authority| %>
12
- <%= content_tag_for(:tr, authority) do %>
12
+ <%= content_tag(:tr, id: dom_id(authority), class: dom_class(authority)) do %>
13
13
  <td><%= link_to authority.role, wobauth.role_path(authority.role) %></td>
14
14
  <td><%= authorized_for_link(authority.authorized_for) %></td>
15
15
  <td><%= authority.authorized_for_type %></td>
@@ -1,49 +1,54 @@
1
1
  <h1><%= t('controller.wobauth/users') %></h1>
2
2
 
3
- <%= content_tag :table, id: :wobauth_users, role: :wobauth_datatable,
4
- class: "table table-bordered table-striped dataTable" do %>
5
- <thead>
6
- <tr>
7
- <th><%= t('attributes.name') %></th>
8
- <th class="notvisible"><%= t('attributes.sn') %></th>
9
- <th class="notvisible"><%= t('attributes.givenname') %></th>
10
- <th class="notvisible"><%= t('attributes.title') %></th>
11
- <th><%= t('attributes.username') %></th>
12
- <th><%= t('attributes.telephone') %></th>
13
- <th><%= t('attributes.email') %></th>
14
- <th class="notvisible"><%= t('attributes.position') %></th>
15
- <th class="notvisible"><%= t('attributes.department') %></th>
16
- <th class="notvisible"><%= t('attributes.company') %></th>
17
- <th><%= t('attributes.current_sign_in_at') %></th>
18
- <th class="notvisible"><%= t('attributes.sign_in_count') %></th>
19
- <th><%= t('wobauth.action')%></th>
20
- </tr>
21
- </thead>
22
- <tbody>
3
+ <div data-controller="datatables">
4
+ <%= content_tag :table, id: :wobauth_users, role: :wobauth_datatable,
5
+ class: "table table-bordered table-striped",
6
+ data: {
7
+ "datatables-target": 'datatable',
8
+ } do %>
9
+ <thead>
10
+ <tr>
11
+ <th><%= t('attributes.name') %></th>
12
+ <th class="notvisible"><%= t('attributes.sn') %></th>
13
+ <th class="notvisible"><%= t('attributes.givenname') %></th>
14
+ <th class="notvisible"><%= t('attributes.title') %></th>
15
+ <th><%= t('attributes.username') %></th>
16
+ <th><%= t('attributes.telephone') %></th>
17
+ <th><%= t('attributes.email') %></th>
18
+ <th class="notvisible"><%= t('attributes.position') %></th>
19
+ <th class="notvisible"><%= t('attributes.department') %></th>
20
+ <th class="notvisible"><%= t('attributes.company') %></th>
21
+ <th><%= t('attributes.current_sign_in_at') %></th>
22
+ <th class="notvisible"><%= t('attributes.sign_in_count') %></th>
23
+ <th><%= t('wobauth.action')%></th>
24
+ </tr>
25
+ </thead>
26
+ <tbody>
23
27
 
24
- <% @users.each do |user| %>
25
- <%= content_tag_for(:tr, user) do %>
26
- <td><%= user %></td>
27
- <td><%= user.sn %></td>
28
- <td><%= user.givenname %></td>
29
- <td><%= user.title %></td>
30
- <td><%= user.username %></td>
31
- <td><%= user.telephone %></td>
32
- <td><%= user.email %></td>
33
- <td><%= user.position %></td>
34
- <td><%= user.department %></td>
35
- <td><%= user.company %></td>
36
- <td><%= user.current_sign_in_at.try(:to_date) %></td>
37
- <td><%= user.sign_in_count %></td>
38
- <td class="nowrap">
39
- <%= show_link [wobauth, user] %>
40
- <%= edit_link [wobauth, user] %>
41
- <%= delete_link [wobauth, user] %>
42
- </td>
28
+ <% @users.each do |user| %>
29
+ <%= content_tag(:tr, id: dom_id(user), class: dom_class(user)) do %>
30
+ <td><%= user %></td>
31
+ <td><%= user.sn %></td>
32
+ <td><%= user.givenname %></td>
33
+ <td><%= user.title %></td>
34
+ <td><%= user.username %></td>
35
+ <td><%= user.telephone %></td>
36
+ <td><%= user.email %></td>
37
+ <td><%= user.position %></td>
38
+ <td><%= user.department %></td>
39
+ <td><%= user.company %></td>
40
+ <td><%= user.current_sign_in_at.try(:to_date) %></td>
41
+ <td><%= user.sign_in_count %></td>
42
+ <td class="nowrap">
43
+ <%= show_link [wobauth, user] %>
44
+ <%= edit_link [wobauth, user] %>
45
+ <%= delete_link [wobauth, user] %>
46
+ </td>
47
+ <% end %>
43
48
  <% end %>
44
- <% end %>
45
- </tbody>
46
- <% end %>
49
+ </tbody>
50
+ <% end %>
51
+ </div>
47
52
 
48
53
  <br />
49
54
 
@@ -1,11 +1,11 @@
1
1
  # Use this setup block to configure all options available in SimpleForm.
2
2
  SimpleForm.setup do |config|
3
3
  config.error_notification_class = 'alert alert-danger'
4
- # config.button_class = 'btn btn-primary'
4
+ config.button_class = 'btn btn-primary'
5
5
  config.boolean_label_class = 'form-check-label'
6
6
 
7
7
  # Helpers
8
- wrapper_options = {class: 'form-group'}
8
+ wrapper_options = {class: 'mb-3'}
9
9
  input_options = {error_class: 'is-invalid'}
10
10
  label_class = 'col-form-label'
11
11
 
@@ -14,7 +14,7 @@ SimpleForm.setup do |config|
14
14
  b.use :hint, wrap_with: {tag: 'small', class: 'form-text text-muted'}
15
15
  end
16
16
 
17
- config.wrappers :vertical_form, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
17
+ config.wrappers :vertical_form, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
18
18
  b.use :html5
19
19
  b.use :placeholder
20
20
  b.optional :maxlength
@@ -28,7 +28,7 @@ SimpleForm.setup do |config|
28
28
  error_and_hint.call(b)
29
29
  end
30
30
 
31
- config.wrappers :vertical_file_input, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
31
+ config.wrappers :vertical_file_input, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
32
32
  b.use :html5
33
33
  b.use :placeholder
34
34
  b.optional :maxlength
@@ -40,7 +40,7 @@ SimpleForm.setup do |config|
40
40
  error_and_hint.call(b)
41
41
  end
42
42
 
43
- config.wrappers :vertical_boolean, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
43
+ config.wrappers :vertical_boolean, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
44
44
  b.use :html5
45
45
  b.optional :readonly
46
46
 
@@ -51,7 +51,7 @@ SimpleForm.setup do |config|
51
51
  error_and_hint.call(b)
52
52
  end
53
53
 
54
- config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
54
+ config.wrappers :vertical_radio_and_checkboxes, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
55
55
  b.use :html5
56
56
  b.optional :readonly
57
57
  b.use :label, class: 'control-label'
@@ -59,7 +59,7 @@ SimpleForm.setup do |config|
59
59
  error_and_hint.call(b)
60
60
  end
61
61
 
62
- config.wrappers :horizontal_form, tag: 'div', class: 'form-group row', error_class: 'has-invalid' do |b|
62
+ config.wrappers :horizontal_form, tag: 'div', class: 'mb-3 row', error_class: 'has-invalid' do |b|
63
63
  b.use :html5
64
64
  b.use :placeholder
65
65
  b.optional :maxlength
@@ -75,7 +75,7 @@ SimpleForm.setup do |config|
75
75
  end
76
76
  end
77
77
 
78
- config.wrappers :horizontal_file_input, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
78
+ config.wrappers :horizontal_file_input, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
79
79
  b.use :html5
80
80
  b.use :placeholder
81
81
  b.optional :maxlength
@@ -89,7 +89,7 @@ SimpleForm.setup do |config|
89
89
  end
90
90
  end
91
91
 
92
- config.wrappers :horizontal_boolean, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
92
+ config.wrappers :horizontal_boolean, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
93
93
  b.use :html5
94
94
  b.optional :readonly
95
95
  b.use :label, class: 'col-sm-3 col-md-2 col-form-label'
@@ -102,7 +102,7 @@ SimpleForm.setup do |config|
102
102
  end
103
103
  end
104
104
 
105
- config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
105
+ config.wrappers :horizontal_radio_and_checkboxes, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
106
106
  b.use :html5
107
107
  b.optional :readonly
108
108
 
@@ -114,7 +114,7 @@ SimpleForm.setup do |config|
114
114
  end
115
115
  end
116
116
 
117
- config.wrappers :inline_form, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
117
+ config.wrappers :inline_form, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
118
118
  b.use :html5
119
119
  b.use :placeholder
120
120
  b.optional :maxlength
@@ -128,7 +128,7 @@ SimpleForm.setup do |config|
128
128
  error_and_hint.call(b)
129
129
  end
130
130
 
131
- config.wrappers :multi_select, tag: 'div', class: 'form-group', error_class: 'has-invalid' do |b|
131
+ config.wrappers :multi_select, tag: 'div', class: 'mb-3', error_class: 'has-invalid' do |b|
132
132
  b.use :html5
133
133
  b.optional :readonly
134
134
  b.use :label, class: 'control-label'
@@ -1,3 +1,4 @@
1
+ # simple
1
2
  ldap_options:
2
3
  host: 1.2.3.4
3
4
  port: 3268
@@ -7,3 +8,34 @@ ldap_options:
7
8
  username: myusername
8
9
  password: mysecretpassword
9
10
 
11
+ # redundant: 1 directory with 2 redundant servers
12
+ ldap_options:
13
+ hosts:
14
+ - [1.2.3.4, 3269]
15
+ - [5.6.7.8, 3269]
16
+ encryption: :simple_tls
17
+ base: dc=example,dc=com
18
+ auth:
19
+ method: :simple
20
+ username: myusername
21
+ password: mysecretpassword
22
+
23
+ # multiple directories
24
+ ldap_options:
25
+ - host: 1.2.3.4
26
+ port: 3268
27
+ base: dc=example,dc=com
28
+ auth:
29
+ method: :simple
30
+ username: myusername
31
+ password: mysecretpassword
32
+ - host: 5.6.7.8
33
+ port: 3269
34
+ base: dc=example,dc=com
35
+ encryption: :simple_tls
36
+ auth:
37
+ method: :simple
38
+ username: myusername
39
+ password: mysecretpassword
40
+
41
+
@@ -12,7 +12,7 @@
12
12
  <tbody>
13
13
 
14
14
  <%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
15
- <%%= content_tag_for(:tr, <%= singular_table_name %>) do %>
15
+ <%%= content_tag(:tr, id: dom_id(<%= singular_table_name %>), class: dom_class(<%= singular_table_name %>)) do %>
16
16
  <% attributes.each do |attribute| -%>
17
17
  <td><%%= <%= singular_table_name %>.<%= attribute.name %> %></td>
18
18
  <% end -%>
data/lib/wobauth.rb CHANGED
@@ -45,13 +45,18 @@ module Wobauth
45
45
  config ||= Hash.new
46
46
 
47
47
  if config['ldap_options'].present?
48
- opts = config['ldap_options'].symbolize_keys
49
- opts.each do |k,v|
50
- opts[k] = opts[k].symbolize_keys if opts[k].kind_of? Hash
48
+ ldapopts = config['ldap_options']
49
+ if ldapopts.kind_of? Hash
50
+ ldapopts = [ldapopts]
51
+ end
52
+ ldapopts.each do |opts|
53
+ opts.symbolize_keys!
54
+ opts.each do |k,v|
55
+ opts[k] = opts[k].symbolize_keys if opts[k].kind_of? Hash
56
+ end
51
57
  end
52
58
  else
53
59
  nil
54
60
  end
55
61
  end
56
-
57
62
  end
@@ -1,4 +1,4 @@
1
1
  module Wobauth
2
- VERSION = "5.0.2".freeze
3
- RELEASEDATE = "2020-04-05".freeze
2
+ VERSION = "6.0.0".freeze
3
+ RELEASEDATE = "2021-07-04".freeze
4
4
  end
data/spec/factories.rb CHANGED
@@ -1,12 +1,28 @@
1
1
  FactoryBot.define do
2
2
 
3
+ sequence :email, 10000 do |n|
4
+ "person#{n}@example.net"
5
+ end
6
+
7
+ sequence :group do |n|
8
+ "group_#{n}"
9
+ end
10
+
11
+ sequence :username do |n|
12
+ "user_#{n}"
13
+ end
14
+
15
+ sequence :name do |n|
16
+ "name_#{n}"
17
+ end
18
+
3
19
  factory :authority, class: Wobauth::Authority do
4
20
  association :authorizable, factory: :user
5
21
  role
6
22
  end
7
23
 
8
24
  factory :group, class: Wobauth::Group do
9
- sequence(:name) { |n| "name_#{n}" }
25
+ name { generate(:name) }
10
26
  end
11
27
 
12
28
  factory :membership, class: Wobauth::Membership do
@@ -15,12 +31,12 @@ FactoryBot.define do
15
31
  end
16
32
 
17
33
  factory :role, class: Wobauth::Role do
18
- sequence(:name) { |n| "name_#{n}" }
34
+ name { generate(:name) }
19
35
  end
20
36
 
21
37
  factory :user, class: Wobauth::User do
22
- sequence(:username) { |n| "user#{n}" }
23
- sequence(:email, 1000) { |n| "user#{n}@example.net" }
38
+ username { generate(:username) }
39
+ email { generate(:email) }
24
40
  password { "test99" }
25
41
  password_confirmation { "test99" }
26
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wobauth
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.2
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wolfgang Barth
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-05 00:00:00.000000000 Z
11
+ date: 2021-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.0'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '5.0'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: wobapphelpers
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.1'
33
+ version: '4.99'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.1'
40
+ version: '4.99'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: wobaduser
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -150,20 +150,6 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: record_tag_helper
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '1.0'
160
- type: :runtime
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '1.0'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: font-awesome-sass
169
155
  requirement: !ruby/object:Gem::Requirement
@@ -188,16 +174,16 @@ dependencies:
188
174
  name: wobapphelpers
189
175
  requirement: !ruby/object:Gem::Requirement
190
176
  requirements:
191
- - - "~>"
177
+ - - ">"
192
178
  - !ruby/object:Gem::Version
193
- version: '4.0'
179
+ version: '4.99'
194
180
  type: :development
195
181
  prerelease: false
196
182
  version_requirements: !ruby/object:Gem::Requirement
197
183
  requirements:
198
- - - "~>"
184
+ - - ">"
199
185
  - !ruby/object:Gem::Version
200
- version: '4.0'
186
+ version: '4.99'
201
187
  - !ruby/object:Gem::Dependency
202
188
  name: wobaduser
203
189
  requirement: !ruby/object:Gem::Requirement
@@ -352,20 +338,6 @@ dependencies:
352
338
  - - ">="
353
339
  - !ruby/object:Gem::Version
354
340
  version: '0'
355
- - !ruby/object:Gem::Dependency
356
- name: record_tag_helper
357
- requirement: !ruby/object:Gem::Requirement
358
- requirements:
359
- - - "~>"
360
- - !ruby/object:Gem::Version
361
- version: '1.0'
362
- type: :development
363
- prerelease: false
364
- version_requirements: !ruby/object:Gem::Requirement
365
- requirements:
366
- - - "~>"
367
- - !ruby/object:Gem::Version
368
- version: '1.0'
369
341
  - !ruby/object:Gem::Dependency
370
342
  name: rails-controller-testing
371
343
  requirement: !ruby/object:Gem::Requirement
@@ -554,6 +526,20 @@ dependencies:
554
526
  - - ">="
555
527
  - !ruby/object:Gem::Version
556
528
  version: '0'
529
+ - !ruby/object:Gem::Dependency
530
+ name: webpacker
531
+ requirement: !ruby/object:Gem::Requirement
532
+ requirements:
533
+ - - "~>"
534
+ - !ruby/object:Gem::Version
535
+ version: '5.0'
536
+ type: :development
537
+ prerelease: false
538
+ version_requirements: !ruby/object:Gem::Requirement
539
+ requirements:
540
+ - - "~>"
541
+ - !ruby/object:Gem::Version
542
+ version: '5.0'
557
543
  description: Rails engine providing MVCs for User, Group, Role, Membership and Authority
558
544
  email: wob@swobspace.de
559
545
  executables: []
@@ -684,7 +670,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
684
670
  - !ruby/object:Gem::Version
685
671
  version: '0'
686
672
  requirements: []
687
- rubygems_version: 3.0.3
673
+ rubygems_version: 3.1.6
688
674
  signing_key:
689
675
  specification_version: 4
690
676
  summary: Rails engine providing MVCs for User, Group, Role, Membership and Authority