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 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