eco-helpers 2.0.57 → 2.0.58
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +24 -5
- data/eco-helpers.gemspec +1 -1
- data/lib/eco/api/common/loaders/base.rb +8 -0
- data/lib/eco/api/common/people/default_parsers/boolean_parser.rb +1 -1
- data/lib/eco/api/common/people/entry_factory.rb +1 -0
- data/lib/eco/api/common/session/sftp.rb +8 -2
- data/lib/eco/api/common/version_patches/ecoportal_api/internal_person.rb +17 -0
- data/lib/eco/api/microcases/set_supervisor.rb +1 -1
- data/lib/eco/api/organization/login_providers.rb +25 -11
- data/lib/eco/api/policies/default_policies/99_user_access_policy.rb +30 -8
- data/lib/eco/api/session/config/people.rb +13 -1
- data/lib/eco/api/session/config.rb +5 -0
- data/lib/eco/api/usecases/default_cases/clear_abilities_case.rb +22 -0
- data/lib/eco/api/usecases/default_cases.rb +1 -0
- data/lib/eco/cli/config/default/usecases.rb +4 -0
- data/lib/eco/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6c0a28540154a0421d36734a7b0a7f1d7e52b54082390804f696968b8a24d7c
|
4
|
+
data.tar.gz: 5f046e1b94bca34335551f14d5be2e7082ee91d131200609a8d0d517b0342334
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 175e05b1799c9231570b9cd69cd25aafbef5f3db65e48be20c070fef5535d7679c04f032ab885d1cad2ea85fa1191b93d151d903b880821b5d2ad4db482d71ca
|
7
|
+
data.tar.gz: 4fa3671f1519440527d99aa4123aa287642cd8f1e535bba0a0a0201d1a23b15a902d4beca2e5994826746d28fd1b0e3e21fcdb647d3eac462feb067b9434552d
|
data/CHANGELOG.md
CHANGED
@@ -1,18 +1,38 @@
|
|
1
1
|
# Change Log
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
|
4
|
-
## [2.0.57] - 2022-
|
4
|
+
## [2.0.57] - 2022-05-31
|
5
5
|
|
6
6
|
### Added
|
7
|
+
- **Usecase**`Eco::API::UseCases::DefaultCases::ClearAbilitiesTransCase`
|
8
|
+
- invokable with `clear-abilities`
|
9
|
+
- `Eco::API::Session::Config::People` added
|
10
|
+
- `default_login_method` helpers
|
11
|
+
- `Eco::API::Session::Config#default_login_method=` added
|
12
|
+
- `Eco::API::Common::Loaders::Base#abort` method to log an error and raise an exception
|
13
|
+
- **patched** `Ecoportal::API::Internal::Person`
|
14
|
+
- Added a couple of handy helpers: `#replace_doc` and `#replace_original_doc`
|
15
|
+
|
16
|
+
### Changed
|
17
|
+
- `Eco::API::Common::Session::SFTP#move` new parameter `override:` (default: `true`)
|
18
|
+
- If there was an error, it would delete the destination remote file and retry to move the file
|
19
|
+
- upgraded `ecoportal-api-v2` gem to `0.8.28`
|
20
|
+
- `Eco::API::Organization::LoginProviders#login_provider`
|
21
|
+
- Added support to fetch based on type (i.e. password, sso)
|
22
|
+
- `Eco::API::Policies::DefaultPolicies::UserAccess`
|
23
|
+
- Added support for `config.default_login_method`
|
24
|
+
|
25
|
+
### Fixed
|
26
|
+
- `Eco::API::Common::People::EntryFactory`
|
27
|
+
- Max allowed enconding errors was not working (it was just fixing all).
|
28
|
+
|
29
|
+
## [2.0.57] - 2022-04-29
|
7
30
|
|
8
31
|
### Changed
|
9
32
|
- `Eco::API::UseCases::DefaultCases::HrisCase`
|
10
33
|
- Made it so the `leavers` batch runs first
|
11
34
|
- This aims to prevent some errors such as `cyclic supervisor` or `email already taken`
|
12
35
|
|
13
|
-
### Fixed
|
14
|
-
|
15
|
-
|
16
36
|
## [2.0.56] - 2022-04-25
|
17
37
|
|
18
38
|
### Added
|
@@ -43,7 +63,6 @@ All notable changes to this project will be documented in this file.
|
|
43
63
|
### Added
|
44
64
|
- `Eco::API::UseCases::DefaultCases::Samples::Sftp` should tell where the files went in the local.
|
45
65
|
|
46
|
-
|
47
66
|
## [2.0.53] - 2022-04-04
|
48
67
|
|
49
68
|
### Added
|
data/eco-helpers.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_development_dependency "redcarpet", ">= 3.5.1", "< 3.6"
|
32
32
|
|
33
33
|
spec.add_dependency 'ecoportal-api', '>= 0.8.5', '< 0.9'
|
34
|
-
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.
|
34
|
+
spec.add_dependency 'ecoportal-api-v2', '>= 0.8.28', '< 0.9'
|
35
35
|
spec.add_dependency 'aws-sdk-s3', '>= 1.83.0', '< 2'
|
36
36
|
spec.add_dependency 'aws-sdk-ses', '>= 1.36.0', '< 2'
|
37
37
|
spec.add_dependency 'dotenv', '>= 2.7.6', '< 2.8'
|
@@ -56,8 +56,14 @@ module Eco
|
|
56
56
|
end
|
57
57
|
|
58
58
|
# @see Net::SFTP::Session#rename
|
59
|
-
def move(fullname_source, fullname_dest, flags=0x0001, &callback)
|
60
|
-
|
59
|
+
def move(fullname_source, fullname_dest, flags=0x0001, override: true, &callback)
|
60
|
+
begin
|
61
|
+
sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
|
62
|
+
rescue Net::SFTP::StatusException => e
|
63
|
+
raise unless override
|
64
|
+
sftp_session.remove(fullname_dest)
|
65
|
+
sftp_session.rename!(fullname_source, fullname_dest, flags, &callback)
|
66
|
+
end
|
61
67
|
end
|
62
68
|
|
63
69
|
# Downloads the files specified to a local folder
|
@@ -14,6 +14,23 @@ module Ecoportal
|
|
14
14
|
account && !ref_doc["account"]
|
15
15
|
end
|
16
16
|
|
17
|
+
# It replaces `doc` by `new_doc`
|
18
|
+
# @return [Hash] `doc` before change
|
19
|
+
def replace_doc!(new_doc)
|
20
|
+
raise UnlinkedModel.new(from: "#{self.class}#replace_doc", key: _key) unless linked?
|
21
|
+
@doc.tap do
|
22
|
+
@doc = new_doc
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# It replaces `original_doc` by `new_doc`
|
27
|
+
# @return [Hash] `original_doc` before change
|
28
|
+
def replace_original_doc!(new_doc)
|
29
|
+
raise UnlinkedModel.new(from: "#{self.class}#replace_original_doc", key: _key) unless linked?
|
30
|
+
@original_doc.tap do
|
31
|
+
@original_doc = new_doc
|
32
|
+
end
|
33
|
+
end
|
17
34
|
end
|
18
35
|
end
|
19
36
|
end
|
@@ -3,7 +3,7 @@ module Eco
|
|
3
3
|
class MicroCases
|
4
4
|
# Unique access point to set the `supervisor_id` value on a person.
|
5
5
|
# @note
|
6
|
-
# - It prevents the basic cyclic supervisor case (supervisor to be supervisor of
|
6
|
+
# - It prevents the basic cyclic supervisor case (supervisor to be supervisor of themselves)
|
7
7
|
# @param person [Ecoportal::API::V1::Person] the person we want to update, carrying the changes to be done.
|
8
8
|
# @param sup_id [nil, String] the **supervisor id** we should set on the `person`.
|
9
9
|
# @param people [Eco::API::Organization::People] _People_ involved in the current update.
|
@@ -56,27 +56,41 @@ module Eco
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
|
60
|
-
|
59
|
+
# @param id_name_type [String, Symbol]
|
60
|
+
# - `String` to refer to the login provider `name` or `id`
|
61
|
+
# - `Symbol` to refer to the login providr type (i.e. `:password`, `:sso`)
|
62
|
+
def login_provider(id_name_type)
|
63
|
+
@by_id[login_provider_id(id_name_type)]
|
61
64
|
end
|
62
65
|
|
63
66
|
private
|
64
67
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
68
|
+
def login_provider_id(value)
|
69
|
+
case value
|
70
|
+
when Symbol
|
71
|
+
value = value.to_s.downcase.to_sym
|
72
|
+
@by_type[value]&.id
|
73
|
+
when String
|
74
|
+
value = value.strip.downcase
|
75
|
+
@by_name[value]&.id || @by_id[value]&.id
|
76
|
+
end
|
71
77
|
end
|
72
78
|
|
73
79
|
def init_caches
|
74
80
|
return if @caches_init
|
75
|
-
|
76
|
-
@
|
81
|
+
enabled_lps = self.select {|lp| lp.enabled_for != "disabled"}
|
82
|
+
@by_id = enabled_lps.each_with_object({}) do |lp, hash|
|
83
|
+
hash[lp.id.downcase] = lp
|
84
|
+
end
|
85
|
+
@by_name = enabled_lps.each_with_object({}) do |lp, hash|
|
86
|
+
hash[lp.name.downcase] = lp
|
87
|
+
end
|
88
|
+
@by_type = enabled_lps.each_with_object({}) do |lp, hash|
|
89
|
+
hash[lp.type.downcase.to_sym] = lp
|
90
|
+
hash[:sso] = lp if (!hash.key?(:sso) && lp.type == "saml")
|
91
|
+
end
|
77
92
|
@caches_init = true
|
78
93
|
end
|
79
|
-
|
80
94
|
end
|
81
95
|
end
|
82
96
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
# Default policy:
|
2
|
+
# 1. Removes the account if the email is empty
|
3
|
+
# 2. Adds the defined default_usergroup if user does not have policy groups
|
4
|
+
# 3. Adds the defined default_login_method if update includes empty login methods
|
1
5
|
class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loaders::Policy
|
2
6
|
name "default-user-access"
|
3
7
|
|
@@ -10,8 +14,12 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
|
|
10
14
|
self.account_removed_count = 0
|
11
15
|
|
12
16
|
people.each do |person|
|
13
|
-
remove_account_when_no_email!(person)
|
14
|
-
|
17
|
+
remove_account_when_no_email!(person) if person.email.to_s.empty?
|
18
|
+
next unless account = person.account
|
19
|
+
if account.policy_group_ids.empty? && def_pg
|
20
|
+
account.policy_group_ids = [def_pg]
|
21
|
+
end
|
22
|
+
add_login_method_if_applicable!(account)
|
15
23
|
end
|
16
24
|
|
17
25
|
warn_account_removal!
|
@@ -39,20 +47,34 @@ class Eco::API::Policies::DefaultPolicies::UserAccess < Eco::API::Common::Loader
|
|
39
47
|
return !!person.original_doc["account"]
|
40
48
|
end
|
41
49
|
|
42
|
-
def
|
43
|
-
|
50
|
+
def add_login_method_if_applicable!(account)
|
51
|
+
return unless account.as_update.key?("login_provider_ids")
|
52
|
+
if account.login_provider_ids.empty? && def_login
|
53
|
+
account.login_provider_ids = [def_login]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def def_pg
|
58
|
+
@def_pg ||= policy_groups.to_id(default_group)
|
44
59
|
end
|
45
60
|
|
46
|
-
def
|
47
|
-
@
|
61
|
+
def def_login
|
62
|
+
@def_login ||= login_providers.to_id(default_login)
|
48
63
|
end
|
49
64
|
|
50
65
|
def default_group
|
51
|
-
|
66
|
+
config.people.default_usergroup
|
67
|
+
end
|
68
|
+
|
69
|
+
def default_login
|
70
|
+
config.people.default_login_method
|
71
|
+
end
|
72
|
+
|
73
|
+
def login_providers
|
74
|
+
session.login_providers
|
52
75
|
end
|
53
76
|
|
54
77
|
def policy_groups
|
55
78
|
session.policy_groups
|
56
79
|
end
|
57
|
-
|
58
80
|
end
|
@@ -86,7 +86,19 @@ module Eco
|
|
86
86
|
def default_schema?
|
87
87
|
!!self["default_schema"]
|
88
88
|
end
|
89
|
-
|
89
|
+
|
90
|
+
def default_login_method=(name)
|
91
|
+
self["default_login_method"] = name
|
92
|
+
end
|
93
|
+
|
94
|
+
def default_login_method
|
95
|
+
self["default_login_method"]
|
96
|
+
end
|
97
|
+
|
98
|
+
def default_login_method?
|
99
|
+
!!self["default_login_method"]
|
100
|
+
end
|
101
|
+
|
90
102
|
# @return [Hash] with defined pairs format `key` and Person parsers.
|
91
103
|
def parsers
|
92
104
|
self["parsers"] ||= {}
|
@@ -297,6 +297,11 @@ module Eco
|
|
297
297
|
people.default_schema = name
|
298
298
|
end
|
299
299
|
|
300
|
+
# Set the **default login method** that users should acquire.
|
301
|
+
def default_login_method=(name)
|
302
|
+
people.default_login_method = name
|
303
|
+
end
|
304
|
+
|
300
305
|
# @see Eco::API::Session::Config::People
|
301
306
|
# @param (see Eco::API::Session::Config::People)
|
302
307
|
# @return [Eco::API::Common::People::PersonParser] parser/serializer for the defined `format`.
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Eco::API::UseCases::DefaultCases::ClearAbilitiesTransCase < Eco::API::Common::Loaders::UseCase
|
2
|
+
name "clear-abilities"
|
3
|
+
type :transform
|
4
|
+
|
5
|
+
def main(people, session, options, usecase)
|
6
|
+
clear_abilities(people.users, session, options, usecase)
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def clear_abilities(users, session, options, usecase)
|
12
|
+
update = session.new_job("main", "clear-abilities", :update, usecase, :account)
|
13
|
+
users.each do |person|
|
14
|
+
person.account.permissions_custom = nil_abilities.dup
|
15
|
+
update.add(person)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def nil_abilities
|
20
|
+
@nil_abilities ||= Eco::API::Organization::PresetsFactory.all_abilities
|
21
|
+
end
|
22
|
+
end
|
@@ -15,6 +15,7 @@ require_relative 'default_cases/analyse_people_case'
|
|
15
15
|
require_relative 'default_cases/append_usergroups_case'
|
16
16
|
require_relative 'default_cases/change_email_case'
|
17
17
|
require_relative 'default_cases/clean_unknown_tags_case'
|
18
|
+
require_relative 'default_cases/clear_abilities_case'
|
18
19
|
require_relative 'default_cases/codes_to_tags_case'
|
19
20
|
require_relative 'default_cases/create_case'
|
20
21
|
require_relative 'default_cases/create_details_case'
|
@@ -196,6 +196,10 @@ ASSETS.cli.config do |cnf|
|
|
196
196
|
options.deep_merge!(force: {invite: true})
|
197
197
|
end
|
198
198
|
|
199
|
+
desc = "Clears the `permissions_custom`, provided that Policy Group abilities alone apply."
|
200
|
+
desc += " Please be mindfull if you use this option (there may be users that have been upgraded in ad-hoc manner)."
|
201
|
+
cases.add("-clear-abilities", :transform, desc, case_name: "clear-abilities")
|
202
|
+
|
199
203
|
desc = "Deletes everybody that has been filtered from the people manager"
|
200
204
|
cases.add("-delete", :transform, desc, case_name: "delete")
|
201
205
|
desc = "Deletes the people specified in the input data"
|
data/lib/eco/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eco-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.58
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oscar Segura
|
@@ -136,7 +136,7 @@ dependencies:
|
|
136
136
|
requirements:
|
137
137
|
- - ">="
|
138
138
|
- !ruby/object:Gem::Version
|
139
|
-
version: 0.8.
|
139
|
+
version: 0.8.28
|
140
140
|
- - "<"
|
141
141
|
- !ruby/object:Gem::Version
|
142
142
|
version: '0.9'
|
@@ -146,7 +146,7 @@ dependencies:
|
|
146
146
|
requirements:
|
147
147
|
- - ">="
|
148
148
|
- !ruby/object:Gem::Version
|
149
|
-
version: 0.8.
|
149
|
+
version: 0.8.28
|
150
150
|
- - "<"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0.9'
|
@@ -528,6 +528,7 @@ files:
|
|
528
528
|
- lib/eco/api/usecases/default_cases/append_usergroups_case.rb
|
529
529
|
- lib/eco/api/usecases/default_cases/change_email_case.rb
|
530
530
|
- lib/eco/api/usecases/default_cases/clean_unknown_tags_case.rb
|
531
|
+
- lib/eco/api/usecases/default_cases/clear_abilities_case.rb
|
531
532
|
- lib/eco/api/usecases/default_cases/codes_to_tags_case.rb
|
532
533
|
- lib/eco/api/usecases/default_cases/create_case.rb
|
533
534
|
- lib/eco/api/usecases/default_cases/create_details_case.rb
|