eco-helpers 2.0.57 → 2.0.58
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 +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
|