egov_utils 0.7.5 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/models/egov_utils/user.rb +6 -18
- data/app/services/egov_utils/refresh_user_groups.rb +32 -0
- data/lib/egov_utils/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 999501817d4aa5533235375d0d182b3816dcbe25126e0b26649e8b121b505f3b
|
4
|
+
data.tar.gz: 030b79099740eb57801b9380908d57501607affc5c002e88c494e66bcfa70a3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d363f4c2a920a0b09234b68281c6a7da47b23347971d27f426968404ebfd653e07cd359d9c08d34439608f4d174d23bb6cece844cb4daa1abf5d83731850ce47
|
7
|
+
data.tar.gz: be24f8cd519b9812ef06d63e128a9bbe4fdd5ca09d2c261dbf128646c3ecb1fa30eabd4c9048269132ee1e66f867c7ae9c3daeaf78fe805e5ffb700b2a5c640f
|
@@ -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,15 @@ 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
145
|
def ldap_dn
|
152
|
-
@ldap_dn ||=
|
146
|
+
@ldap_dn ||= begin
|
147
|
+
dn = auth_source.send(:get_user_dn, login)
|
148
|
+
dn[:dn] if dn
|
149
|
+
end
|
153
150
|
end
|
154
151
|
|
155
152
|
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
|
153
|
+
groups.where.not(ldap_uid: nil)
|
166
154
|
end
|
167
155
|
|
168
156
|
def must_change_password?
|
@@ -0,0 +1,32 @@
|
|
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_groups
|
19
|
+
return [] if user.provider.blank?
|
20
|
+
|
21
|
+
@ldap_groups ||= begin
|
22
|
+
EgovUtils::Group.where(provider: user.provider).to_a.select do |g|
|
23
|
+
user.auth_source.member?(user.ldap_dn, g.external_uid)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def current_non_ldap_group
|
29
|
+
@current_non_ldap_groups ||= user.groups.where(ldap_uid: nil)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/egov_utils/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ondřej Ezr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -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
|