egov_utils 0.7.5 → 1.0.2

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: 53ffb5c5318fad10c8c77a83b96426625793b74fddcc163c1675df14b677dc90
4
- data.tar.gz: 6bf65c30c149638229aa5961ab525678e90cff0bfde805eb7e72b5610cd7ec07
3
+ metadata.gz: 999501817d4aa5533235375d0d182b3816dcbe25126e0b26649e8b121b505f3b
4
+ data.tar.gz: 030b79099740eb57801b9380908d57501607affc5c002e88c494e66bcfa70a3a
5
5
  SHA512:
6
- metadata.gz: 42e49457996959049edf85de48ab50a0dd0efbc085ee000ae94b58c083a3de1eb329ac75a7edc93a020fef91ddfc4a9b6233ef1ffc96f0c5037b863bb90046ce
7
- data.tar.gz: dec8ff52fcce2ec3911e81b4b4fe56ef986ea15ad652ab757160d1fa0d8125d86c4b1e07a5613ec989a015726aae9a1f4900844eca0981a8d46c88505759b4a5
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 ||= Rails.cache.fetch("#{cache_key}/all_role_names", expires_in: 1.hours) do
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 ||= ( dn = auth_source.send(:get_user_dn, login) ) && dn[: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
- if provider.present?
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
@@ -1,3 +1,3 @@
1
1
  module EgovUtils
2
- VERSION = '0.7.5'
2
+ VERSION = '1.0.2'
3
3
  end
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.7.5
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-15 00:00:00.000000000 Z
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