egov_utils 0.7.4 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46866bd8cd323b73b2c99ad7f027e7b3ae9042f871d93b9b5ca0f45677fe643e
|
4
|
+
data.tar.gz: b233828c37f7dc42a4093aaee39ec5339f28e11ddd539910004803ba035be4eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b165226cc59161621b0645957accb50a58e153c4f139aaf6a22b19772a22900f75b7a99b4ab84899a732820d25e43c14bea28546ac7b648e8205f64a6a476c5
|
7
|
+
data.tar.gz: e25fd828cad3f7116847a65471415624493ccf04011987f5584a96bfb67598e3cff944ddc300947226b24232946bf696fa07b5b80d6c4e636ed9815dbf53fadd
|
@@ -133,9 +133,7 @@ module EgovUtils
|
|
133
133
|
end
|
134
134
|
|
135
135
|
def all_role_names
|
136
|
-
@all_role_names ||=
|
137
|
-
groups.collect{|g| g.roles}.reduce([], :concat) + roles
|
138
|
-
end
|
136
|
+
@all_role_names ||= groups.map(&:roles).flatten + roles
|
139
137
|
@all_role_names << DEFAULT_ROLE if DEFAULT_ROLE && !@all_role_names.any?
|
140
138
|
@all_role_names
|
141
139
|
end
|
@@ -144,25 +142,8 @@ module EgovUtils
|
|
144
142
|
all_role_names.map{|rn| EgovUtils::UserUtils::Role.find(rn) }.compact.collect{|cls| cls.new }
|
145
143
|
end
|
146
144
|
|
147
|
-
def groups
|
148
|
-
super.to_a.concat( Array.wrap(ldap_groups) )
|
149
|
-
end
|
150
|
-
|
151
|
-
def ldap_dn
|
152
|
-
@ldap_dn ||= ( dn = auth_source.send(:get_user_dn, login) ) && dn[:dn]
|
153
|
-
end
|
154
|
-
|
155
145
|
def ldap_groups
|
156
|
-
|
157
|
-
group_ids = persisted? && Rails.cache.read("#{cache_key}/ldap_group_ids", expires_in: 30.minutes)
|
158
|
-
if group_ids
|
159
|
-
groups = EgovUtils::Group.where(id: group_ids).to_a
|
160
|
-
else
|
161
|
-
groups = EgovUtils::Group.where(provider: provider).to_a.select{|g| auth_source.member?(ldap_dn, g.external_uid) }
|
162
|
-
Rails.cache.write("#{cache_key}/ldap_group_ids", groups.collect(&:id), expires_in: 30.minutes) if persisted?
|
163
|
-
end
|
164
|
-
groups
|
165
|
-
end
|
146
|
+
groups.where.not(ldap_uid: nil)
|
166
147
|
end
|
167
148
|
|
168
149
|
def must_change_password?
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module EgovUtils
|
2
|
+
class RefreshUserGroups
|
3
|
+
|
4
|
+
def initialize(user)
|
5
|
+
@user = user
|
6
|
+
end
|
7
|
+
|
8
|
+
def call
|
9
|
+
group_ids = (current_non_ldap_group + ldap_groups).compact.map(&:id)
|
10
|
+
user.group_ids = group_ids
|
11
|
+
user
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
attr_reader :user
|
17
|
+
|
18
|
+
def ldap_dn
|
19
|
+
@ldap_dn ||= begin
|
20
|
+
dn = user.auth_source.send(:get_user_dn, user.login)
|
21
|
+
dn[:dn] if dn
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def ldap_groups
|
26
|
+
return [] if user.provider.blank?
|
27
|
+
|
28
|
+
@ldap_groups ||= begin
|
29
|
+
EgovUtils::Group.where(provider: user.provider).to_a.select do |g|
|
30
|
+
user.auth_source.member?(ldap_dn, g.external_uid)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def current_non_ldap_group
|
36
|
+
@current_non_ldap_groups ||= user.groups.where(ldap_uid: nil)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
data/lib/egov_utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egov_utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ondřej Ezr
|
@@ -549,6 +549,7 @@ files:
|
|
549
549
|
- app/schemas/egov_utils/natural_person_schema.rb
|
550
550
|
- app/schemas/egov_utils/person_schema.rb
|
551
551
|
- app/schemas/egov_utils/user_schema.rb
|
552
|
+
- app/services/egov_utils/refresh_user_groups.rb
|
552
553
|
- app/validators/birthday_validator.rb
|
553
554
|
- app/validators/email_validator.rb
|
554
555
|
- app/validators/fileuid_validator.rb
|