wobauth 4.0.0 → 5.1.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 +4 -4
- data/LICENSE +1 -1
- data/README.md +12 -2
- data/app/assets/javascripts/wobauth/authorities.js.coffee +8 -8
- data/app/helpers/wobauth/application_helper.rb +1 -33
- data/app/models/wobauth/group.rb +1 -2
- data/app/models/wobauth/role.rb +1 -1
- data/app/models/wobauth/user.rb +2 -1
- data/app/services/wobauth/search_ad_user_service.rb +27 -9
- data/app/views/wobauth/authorities/_form.html.erb +6 -2
- data/app/views/wobauth/authorities/show.html.erb +8 -8
- data/app/views/wobauth/memberships/show.html.erb +4 -4
- data/app/views/wobauth/users/index.html.erb +1 -1
- data/app/views/wobauth/users/show.html.erb +1 -1
- data/config/ldap.yml.example +41 -0
- data/config/locales/wobapphelpers.de.yml +11 -7
- data/config/locales/wobapphelpers.en.yml +9 -3
- data/lib/wobauth.rb +9 -4
- data/lib/wobauth/concerns/models/user_concerns.rb +40 -0
- data/lib/wobauth/version.rb +2 -2
- metadata +8 -7
- data/lib/concerns/models/user.rb +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ece99ba3c367db93f0174e65b7322eee6b8eb14ce78ef81e1b954672833fb56a
|
4
|
+
data.tar.gz: 2eb7759dd766870f95cdfd7ed18f712e650dd364ab4a8179cb789ce65a644618
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fbd648f6565680dd3f3d2f344b7c7b39bbe2ddadea2285828e18bc803ba1cfbc1146fddd740cc6c5d26b352b04444295890bad1aa6d7ab936a7f0f1dd855454e
|
7
|
+
data.tar.gz: e75e32b2f84fbf4b0c4405769c154c65cff5d88b6d6a9b40001dfae05f6ae33e4d4a649654da472821f8a3b02dce0673e4641cd3443cd4c3eee5d82062d62c0f
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -29,13 +29,22 @@ wobauth 1.x is for Rails 4, wobauth 2.x will support Rails 5.
|
|
29
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
|
+
wobauth 5.x works with rails 6.x and is designed for autoloading via zeitwerk.
|
32
33
|
|
33
34
|
Requirements
|
34
35
|
------------
|
35
36
|
|
37
|
+
### Rails >= 6.0, autoload = :zeitwerk
|
38
|
+
|
39
|
+
| branch | rails | ruby | bootstrap | icons | wobapphelpers |
|
40
|
+
|------------|-------|--------|-----------|-----------------|---------------|
|
41
|
+
| master(5.x)| >=6.0 | >= 2.6 | v4 | fontawesome 5.x | master (4.x) |
|
42
|
+
|
43
|
+
### Rails <= 5.2, autoload = :classic
|
44
|
+
|
36
45
|
| branch | rails | ruby | bootstrap | icons | wobapphelpers |
|
37
46
|
|------------|-------|--------|-----------|-----------------|---------------|
|
38
|
-
|
|
47
|
+
| 4-0-stable | >=5.1 | >= 2.3 | v4 | fontawesome 5.x | master (4.x) |
|
39
48
|
| 3-0-stable | >=5.1 | >= 2.3 | v4 | fontawesome 4.7 | 3-0-stable |
|
40
49
|
| 2-0-stable | 5.0 | >= 2.2 | v3 | glyphicons | 2-0-stable |
|
41
50
|
| 1-0-stable | 4.2 | >= 2.0 | v3 | glyphicons | 1-0-stable |
|
@@ -48,6 +57,7 @@ Installation
|
|
48
57
|
Add wobauth to your Gemfile:
|
49
58
|
|
50
59
|
```ruby
|
60
|
+
gem 'wobauth', '~> 5.0.0'
|
51
61
|
gem 'wobauth', '~> 4.0.0'
|
52
62
|
gem 'wobauth', '~> 3.4.8'
|
53
63
|
gem 'wobauth', git: 'https://github.com/swobspace/wobauth.git', branch: '3-0-stable'
|
@@ -171,7 +181,7 @@ included in this rails engine.
|
|
171
181
|
Licence
|
172
182
|
-------
|
173
183
|
|
174
|
-
wobauth Copyright (C) 2014-
|
184
|
+
wobauth Copyright (C) 2014-2020 Wolfgang Barth
|
175
185
|
|
176
186
|
MIT license, see [LICENSE](LICENSE)
|
177
187
|
|
@@ -4,14 +4,14 @@
|
|
4
4
|
|
5
5
|
# - start with given values
|
6
6
|
auth_types = $('#authority_authorizable_type').find("option:selected").val()
|
7
|
-
$('#authority_authorizable_id optgroup').find('option').addBack().
|
8
|
-
$("#authority_authorizable_id optgroup[label=\"#{auth_types}\"]").find('option').addBack().
|
7
|
+
$('#authority_authorizable_id optgroup').find('option').addBack().attr("disabled", true)
|
8
|
+
$("#authority_authorizable_id optgroup[label=\"#{auth_types}\"]").find('option').addBack().attr("disabled", false)
|
9
9
|
|
10
10
|
# - redisplay on change
|
11
11
|
$(document).on('click', '#authority_authorizable_type', ->
|
12
12
|
type = $(this).find("option:selected").val()
|
13
|
-
$('#authority_authorizable_id optgroup').find('option').addBack().
|
14
|
-
$("#authority_authorizable_id optgroup[label=\"#{type}\"]").find('option').addBack().
|
13
|
+
$('#authority_authorizable_id optgroup').find('option').addBack().attr("disabled", true)
|
14
|
+
$("#authority_authorizable_id optgroup[label=\"#{type}\"]").find('option').addBack().attr("disabled", false)
|
15
15
|
)
|
16
16
|
|
17
17
|
#
|
@@ -20,12 +20,12 @@ $(document).on('click', '#authority_authorizable_type', ->
|
|
20
20
|
|
21
21
|
# - start with given values
|
22
22
|
authfor_type = $('#authority_authorized_for_type').find("option:selected").val()
|
23
|
-
$('#authority_authorized_for_id optgroup').find('option').addBack().
|
24
|
-
$("#authority_authorized_for_id optgroup[label=\"#{authfor_type}\"]").find('option').addBack().
|
23
|
+
$('#authority_authorized_for_id optgroup').find('option').addBack().attr("disabled", true)
|
24
|
+
$("#authority_authorized_for_id optgroup[label=\"#{authfor_type}\"]").find('option').addBack().attr("disabled", false)
|
25
25
|
|
26
26
|
# - redisplay on change
|
27
27
|
$(document).on('click', '#authority_authorized_for_type', ->
|
28
28
|
type = $(this).find("option:selected").val()
|
29
|
-
$('#authority_authorized_for_id optgroup').find('option').addBack().
|
30
|
-
$("#authority_authorized_for_id optgroup[label=\"#{type}\"]").find('option').addBack().
|
29
|
+
$('#authority_authorized_for_id optgroup').find('option').addBack().attr("disabled", true)
|
30
|
+
$("#authority_authorized_for_id optgroup[label=\"#{type}\"]").find('option').addBack().attr("disabled", false)
|
31
31
|
)
|
@@ -1,19 +1,7 @@
|
|
1
1
|
module Wobauth
|
2
2
|
module ApplicationHelper
|
3
3
|
include Wobapphelpers::Helpers::All
|
4
|
-
|
5
|
-
def polymorphic_selector(form, poly, types, group_method = :all)
|
6
|
-
msg = ""
|
7
|
-
# -- object available?
|
8
|
-
if form.object.send(poly).present?
|
9
|
-
msg += poly_type_display(form, poly)
|
10
|
-
msg += poly_id_select(form, poly, form.object.send("#{poly}_type"), :all)
|
11
|
-
else
|
12
|
-
msg += poly_type_select(form, poly, types)
|
13
|
-
msg += poly_id_select(form, poly, types, group_method)
|
14
|
-
end
|
15
|
-
msg.html_safe
|
16
|
-
end
|
4
|
+
include Wobapphelpers::Helpers::PolymorphicHelper
|
17
5
|
|
18
6
|
def navigation_admin_links
|
19
7
|
render partial: 'wobauth/shared/admin'
|
@@ -29,25 +17,5 @@ module Wobauth
|
|
29
17
|
end
|
30
18
|
end
|
31
19
|
|
32
|
-
private
|
33
|
-
|
34
|
-
def poly_type_select(f, poly, types)
|
35
|
-
f.input "#{poly}_type".to_sym, collection: types,
|
36
|
-
label_method: lambda {|x| t('activerecord.models.' + x.underscore)}
|
37
|
-
end
|
38
|
-
|
39
|
-
def poly_type_display(f, poly)
|
40
|
-
f.input("#{poly}_type".to_sym, collection: Array(f.object.send("#{poly}_type")),
|
41
|
-
label_method: lambda {|x| t('activerecord.models.' + x.underscore)},
|
42
|
-
disabled: true) +
|
43
|
-
f.hidden_field("#{poly}_type".to_sym, value: f.object.send("#{poly}_type"))
|
44
|
-
end
|
45
|
-
|
46
|
-
def poly_id_select(f, poly, types, group_method)
|
47
|
-
collections = Array(types).map {|t| t.constantize}
|
48
|
-
f.input "#{poly}_id".to_sym, collection: collections,
|
49
|
-
as: :grouped_select, group_method: group_method
|
50
|
-
end
|
51
|
-
|
52
20
|
end
|
53
21
|
end
|
data/app/models/wobauth/group.rb
CHANGED
data/app/models/wobauth/role.rb
CHANGED
data/app/models/wobauth/user.rb
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
require_dependency 'wobauth/concerns/models/user_concerns'
|
1
2
|
module Wobauth
|
2
3
|
class User < ActiveRecord::Base
|
3
4
|
# dependencies within wobauth models
|
4
|
-
include
|
5
|
+
include UserConcerns
|
5
6
|
|
6
7
|
# Include default devise modules. Others available are:
|
7
8
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
@@ -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
|
-
|
21
|
-
|
22
|
-
|
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
|
-
|
26
|
-
|
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
|
-
|
30
|
-
|
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
|
@@ -11,12 +11,16 @@
|
|
11
11
|
<%= polymorphic_selector(f,
|
12
12
|
'authorizable',
|
13
13
|
Wobauth.authorizable_types,
|
14
|
-
Wobauth.authorizable_group_method
|
14
|
+
Wobauth.authorizable_group_method,
|
15
|
+
{class: 'select2'})
|
16
|
+
%>
|
15
17
|
<%= f.association :role %>
|
16
18
|
<%= polymorphic_selector(f,
|
17
19
|
'authorized_for',
|
18
20
|
Wobauth.authorized_for_types,
|
19
|
-
Wobauth.authorized_for_group_method
|
21
|
+
Wobauth.authorized_for_group_method,
|
22
|
+
{class: 'select2'})
|
23
|
+
%>
|
20
24
|
|
21
25
|
<%= f.input :valid_from, as: :string, class: 'datepicker'
|
22
26
|
%>
|
@@ -3,33 +3,33 @@
|
|
3
3
|
<h4><%= t('activerecord.models.wobauth/authority') %></h4>
|
4
4
|
</div>
|
5
5
|
<div class="card-body">
|
6
|
-
<table class="table table-
|
6
|
+
<table class="table table-sm table-borderless">
|
7
7
|
<tr>
|
8
|
-
<th><%= t('attributes.authorizable')%>:</th>
|
8
|
+
<th class="w-25 text-right"><%= t('attributes.authorizable')%>:</th>
|
9
9
|
<td><%= @authority.authorizable %></td>
|
10
10
|
</tr>
|
11
11
|
<tr>
|
12
|
-
<th><%= t('attributes.authorizable_type')%>:</th>
|
12
|
+
<th class="w-25 text-right"><%= t('attributes.authorizable_type')%>:</th>
|
13
13
|
<td><%= @authority.authorizable_type %></td>
|
14
14
|
</tr>
|
15
15
|
<tr>
|
16
|
-
<th><%= t('attributes.role')%>:</th>
|
16
|
+
<th class="w-25 text-right"><%= t('attributes.role')%>:</th>
|
17
17
|
<td><%= @authority.role %></td>
|
18
18
|
</tr>
|
19
19
|
<tr>
|
20
|
-
<th><%= t('attributes.authorized_for')%>:</th>
|
20
|
+
<th class="w-25 text-right"><%= t('attributes.authorized_for')%>:</th>
|
21
21
|
<td><%= @authority.authorized_for %></td>
|
22
22
|
</tr>
|
23
23
|
<tr>
|
24
|
-
<th><%= t('attributes.authorized_for_type')%>:</th>
|
24
|
+
<th class="w-25 text-right"><%= t('attributes.authorized_for_type')%>:</th>
|
25
25
|
<td><%= @authority.authorized_for_type %></td>
|
26
26
|
</tr>
|
27
27
|
<tr>
|
28
|
-
<th><%= t('attributes.valid_from')%>:</th>
|
28
|
+
<th class="w-25 text-right"><%= t('attributes.valid_from')%>:</th>
|
29
29
|
<td><%= @authority.valid_from %></td>
|
30
30
|
</tr>
|
31
31
|
<tr>
|
32
|
-
<th><%= t('attributes.valid_until')%>:</th>
|
32
|
+
<th class="w-25 text-right"><%= t('attributes.valid_until')%>:</th>
|
33
33
|
<td><%= @authority.valid_until %></td>
|
34
34
|
</tr>
|
35
35
|
</table>
|
@@ -3,17 +3,17 @@
|
|
3
3
|
<h4><%= t('attributes.membership') %></h4>
|
4
4
|
</div>
|
5
5
|
<div class="card-body">
|
6
|
-
<table class="table table-
|
6
|
+
<table class="table table-sm table-borderless ">
|
7
7
|
<tr>
|
8
|
-
<th><%= t('attributes.user')%>:</th>
|
8
|
+
<th class="w-25 text-right"><%= t('attributes.user')%>:</th>
|
9
9
|
<td><%= @membership.user %></td>
|
10
10
|
</tr>
|
11
11
|
<tr>
|
12
|
-
<th><%= t('attributes.group')%>:</th>
|
12
|
+
<th class="w-25 text-right"><%= t('attributes.group')%>:</th>
|
13
13
|
<td><%= @membership.group %></td>
|
14
14
|
</tr>
|
15
15
|
<tr>
|
16
|
-
<th><%= t('attributes.auto')%>:</th>
|
16
|
+
<th class="w-25 text-right"><%= t('attributes.auto')%>:</th>
|
17
17
|
<td><%= @membership.auto %></td>
|
18
18
|
</tr>
|
19
19
|
</table>
|
@@ -49,4 +49,4 @@
|
|
49
49
|
|
50
50
|
<%= back_link %>
|
51
51
|
<%= new_link [wobauth, Wobauth::User] %>
|
52
|
-
<%= link_to
|
52
|
+
<%= link_to(t('wobauth.new_user_from_ad'), wobauth.ad_users_path, class: 'btn btn-secondary') if can? :create, Wobauth::User %>
|
@@ -94,7 +94,7 @@
|
|
94
94
|
<%= edit_link([wobauth, @user]) %>
|
95
95
|
<%= delete_link([wobauth, @user]) %>
|
96
96
|
<%= new_link [wobauth, Wobauth::User] %>
|
97
|
-
<%= link_to
|
97
|
+
<%= link_to(t('wobauth.new_user_from_ad'), wobauth.ad_users_path, class: 'btn btn-secondary') if can? :create, Wobauth::User %>
|
98
98
|
</div>
|
99
99
|
|
100
100
|
</div>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# simple
|
2
|
+
ldap_options:
|
3
|
+
host: 1.2.3.4
|
4
|
+
port: 3268
|
5
|
+
base: dc=example,dc=com
|
6
|
+
auth:
|
7
|
+
method: :simple
|
8
|
+
username: myusername
|
9
|
+
password: mysecretpassword
|
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
|
+
|
@@ -1,10 +1,14 @@
|
|
1
1
|
de:
|
2
2
|
wobapphelpers:
|
3
3
|
helpers:
|
4
|
-
back:
|
5
|
-
cancel:
|
6
|
-
|
7
|
-
new: "%{
|
8
|
-
create: "%{
|
9
|
-
|
10
|
-
|
4
|
+
back: Zurück
|
5
|
+
cancel: Abbrechen
|
6
|
+
actions:
|
7
|
+
new: "%{model} erstellen"
|
8
|
+
create: "%{model} erstellen"
|
9
|
+
show: "%{model} anzeigen"
|
10
|
+
edit: "%{model} bearbeiten"
|
11
|
+
copy: "%{model} kopieren"
|
12
|
+
update: "%{model} bearbeiten"
|
13
|
+
destroy: "%{model} löschen"
|
14
|
+
destroy_confirm: "Der Datensatz kann nicht wieder hergestellt werden!"
|
@@ -3,6 +3,12 @@ en:
|
|
3
3
|
helpers:
|
4
4
|
back: Back
|
5
5
|
cancel: Cancel
|
6
|
-
|
7
|
-
new: "create %{
|
8
|
-
|
6
|
+
actions:
|
7
|
+
new: "create %{model}"
|
8
|
+
create: "create %{model}"
|
9
|
+
show: "show %{model}"
|
10
|
+
edit: "update %{model}"
|
11
|
+
update: "update %{model}"
|
12
|
+
copy: "copy %{model}"
|
13
|
+
destroy: "destroy %{model}"
|
14
|
+
destroy_confirm: "record would be finally destroyed, no recovery possible!"
|
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
|
-
|
49
|
-
|
50
|
-
|
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
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module UserConcerns
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
has_many :authorities, as: :authorizable, dependent: :destroy
|
6
|
+
has_many :roles, through: :authorities
|
7
|
+
has_many :memberships, dependent: :destroy
|
8
|
+
has_many :groups, -> { distinct }, through: :memberships
|
9
|
+
has_many :group_roles, through: :groups, source: :roles
|
10
|
+
has_many :group_authorities, through: :groups, source: :authorities
|
11
|
+
|
12
|
+
validates :username, presence: true, uniqueness: { case_sensitive: false }
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
def to_s
|
17
|
+
if sn.blank? and givenname.blank?
|
18
|
+
"#{username}"
|
19
|
+
elsif title.blank?
|
20
|
+
"#{sn}, #{givenname} (#{username})"
|
21
|
+
else
|
22
|
+
"#{sn}, #{title} #{givenname} (#{username})"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def name
|
27
|
+
to_s
|
28
|
+
end
|
29
|
+
|
30
|
+
def is_admin?
|
31
|
+
role?(:admin)
|
32
|
+
end
|
33
|
+
|
34
|
+
def role?(role)
|
35
|
+
(self.authorities.joins(:role)
|
36
|
+
.where("wobauth_roles.name = ?", role.to_s.camelize).present?) ||
|
37
|
+
(self.group_authorities.joins(:role)
|
38
|
+
.where("wobauth_roles.name = ?", role.to_s.camelize).present?)
|
39
|
+
end
|
40
|
+
end
|
data/lib/wobauth/version.rb
CHANGED
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wobauth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Wolfgang Barth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-10-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '5.0'
|
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
26
|
version: '5.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '4.
|
33
|
+
version: '4.1'
|
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.
|
40
|
+
version: '4.1'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: wobaduser
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -636,6 +636,7 @@ files:
|
|
636
636
|
- config/initializers/simple_form.rb
|
637
637
|
- config/initializers/simple_form_bootstrap.rb
|
638
638
|
- config/initializers/wobapphelpers.rb
|
639
|
+
- config/ldap.yml.example
|
639
640
|
- config/locales/de.yml
|
640
641
|
- config/locales/devise.de.yml
|
641
642
|
- config/locales/devise.en.yml
|
@@ -650,7 +651,6 @@ files:
|
|
650
651
|
- db/migrate/20140504143328_create_wobauth_authorities.rb
|
651
652
|
- db/migrate/20140508120810_devise_create_wobauth_users.rb
|
652
653
|
- db/migrate/20171231084355_additional_fields_to_wobauth_user.rb
|
653
|
-
- lib/concerns/models/user.rb
|
654
654
|
- lib/generators/templates/initializers/wobauth.rb
|
655
655
|
- lib/generators/wobauth/install_generator.rb
|
656
656
|
- lib/tasks/wobauth_tasks.rake
|
@@ -661,6 +661,7 @@ files:
|
|
661
661
|
- lib/templates/erb/scaffold/show.html.erb
|
662
662
|
- lib/templates/rails/scaffold_controller/controller.rb
|
663
663
|
- lib/wobauth.rb
|
664
|
+
- lib/wobauth/concerns/models/user_concerns.rb
|
664
665
|
- lib/wobauth/engine.rb
|
665
666
|
- lib/wobauth/version.rb
|
666
667
|
- spec/factories.rb
|
data/lib/concerns/models/user.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
module Wobauth
|
2
|
-
module Concerns
|
3
|
-
module Models::User
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
has_many :authorities, as: :authorizable, dependent: :destroy
|
8
|
-
has_many :roles, through: :authorities
|
9
|
-
has_many :memberships, dependent: :destroy
|
10
|
-
has_many :groups, -> { distinct }, through: :memberships
|
11
|
-
has_many :group_roles, through: :groups, source: :roles
|
12
|
-
has_many :group_authorities, through: :groups, source: :authorities
|
13
|
-
|
14
|
-
validates :username, presence: true, uniqueness: true
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def to_s
|
19
|
-
if sn.blank? and givenname.blank?
|
20
|
-
"#{username}"
|
21
|
-
elsif title.blank?
|
22
|
-
"#{sn}, #{givenname} (#{username})"
|
23
|
-
else
|
24
|
-
"#{sn}, #{title} #{givenname} (#{username})"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def name
|
29
|
-
to_s
|
30
|
-
end
|
31
|
-
|
32
|
-
def is_admin?
|
33
|
-
role?(:admin)
|
34
|
-
end
|
35
|
-
|
36
|
-
def role?(role)
|
37
|
-
(self.authorities.joins(:role)
|
38
|
-
.where("wobauth_roles.name = ?", role.to_s.camelize).present?) ||
|
39
|
-
(self.group_authorities.joins(:role)
|
40
|
-
.where("wobauth_roles.name = ?", role.to_s.camelize).present?)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|