arpa 0.2.0 → 0.3.0
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 +5 -5
- data/.rubocop.yml +17 -0
- data/.ruby-version +1 -1
- data/.travis.yml +5 -0
- data/CHANGELOG.md +4 -0
- data/README.md +4 -4
- data/Rakefile +1 -2
- data/arpa.gemspec +17 -18
- data/lib/arpa.rb +65 -67
- data/lib/arpa/additions/resource.rb +0 -2
- data/lib/arpa/data_mappers/action_mapper.rb +1 -2
- data/lib/arpa/data_mappers/base.rb +15 -16
- data/lib/arpa/data_mappers/profile_mapper.rb +3 -4
- data/lib/arpa/data_mappers/resource_mapper.rb +1 -1
- data/lib/arpa/data_mappers/role_mapper.rb +2 -2
- data/lib/arpa/entities/action.rb +0 -2
- data/lib/arpa/entities/profile.rb +2 -3
- data/lib/arpa/entities/resource.rb +4 -6
- data/lib/arpa/entities/role.rb +2 -3
- data/lib/arpa/exceptions/record_invalid.rb +0 -1
- data/lib/arpa/repositories/actions/creator.rb +0 -1
- data/lib/arpa/repositories/actions/finder.rb +5 -6
- data/lib/arpa/repositories/actions/remover.rb +0 -1
- data/lib/arpa/repositories/actions/repository_action.rb +1 -2
- data/lib/arpa/repositories/base.rb +0 -2
- data/lib/arpa/repositories/profiles/creator.rb +0 -1
- data/lib/arpa/repositories/profiles/finder.rb +2 -3
- data/lib/arpa/repositories/profiles/remover.rb +0 -1
- data/lib/arpa/repositories/profiles/repository_profile.rb +1 -2
- data/lib/arpa/repositories/profiles/updater.rb +0 -1
- data/lib/arpa/repositories/registrator.rb +5 -10
- data/lib/arpa/repositories/resources/creator.rb +0 -1
- data/lib/arpa/repositories/resources/finder.rb +0 -1
- data/lib/arpa/repositories/resources/remover.rb +0 -1
- data/lib/arpa/repositories/resources/repository_resource.rb +1 -2
- data/lib/arpa/repositories/roles/creator.rb +0 -1
- data/lib/arpa/repositories/roles/finder.rb +0 -1
- data/lib/arpa/repositories/roles/remover.rb +0 -1
- data/lib/arpa/repositories/roles/repository_role.rb +1 -2
- data/lib/arpa/repositories/roles/updater.rb +0 -1
- data/lib/arpa/services/actions/create/action_creator.rb +1 -3
- data/lib/arpa/services/actions/remove/action_remover.rb +0 -2
- data/lib/arpa/services/base.rb +6 -10
- data/lib/arpa/services/profiles/create/profile_creator.rb +0 -2
- data/lib/arpa/services/profiles/profile_manager_creator.rb +0 -1
- data/lib/arpa/services/profiles/profile_manager_remover.rb +0 -1
- data/lib/arpa/services/profiles/profile_manager_updater.rb +0 -1
- data/lib/arpa/services/profiles/remove/profile_remover.rb +0 -2
- data/lib/arpa/services/profiles/update/profile_updater.rb +0 -2
- data/lib/arpa/services/resources/create/resource_creator.rb +0 -2
- data/lib/arpa/services/resources/remove/resource_remover.rb +1 -4
- data/lib/arpa/services/resources/resource_manager_creator.rb +1 -2
- data/lib/arpa/services/roles/create/role_creator.rb +0 -3
- data/lib/arpa/services/roles/remove/role_remover.rb +0 -2
- data/lib/arpa/services/roles/role_manager_creator.rb +0 -2
- data/lib/arpa/services/roles/role_manager_remover.rb +0 -1
- data/lib/arpa/services/roles/role_manager_updater.rb +0 -1
- data/lib/arpa/services/roles/update/role_updater.rb +0 -2
- data/lib/arpa/services/verifier.rb +0 -1
- data/lib/arpa/validators/action_validator.rb +0 -1
- data/lib/arpa/validators/profile_validator.rb +0 -1
- data/lib/arpa/validators/resource_validator.rb +0 -1
- data/lib/arpa/validators/role_validator.rb +0 -2
- data/lib/arpa/version.rb +1 -1
- data/lib/generators/arpa/controllers_generator.rb +21 -22
- data/lib/generators/arpa/install_generator.rb +5 -6
- data/lib/generators/arpa/templates/controllers/profiles_controller.rb +31 -37
- data/lib/generators/arpa/templates/controllers/resources_controller.rb +20 -11
- data/lib/generators/arpa/templates/controllers/roles_controller.rb +31 -37
- data/lib/generators/arpa/templates/migration.rb +1 -1
- data/spec/factories/repository_actions.rb +4 -5
- data/spec/factories/repository_profiles.rb +4 -5
- data/spec/factories/repository_resources.rb +1 -3
- data/spec/factories/repository_roles.rb +2 -3
- data/spec/factories/repository_test.rb +1 -1
- data/spec/lib/arpa/additions/resource_spec.rb +8 -6
- data/spec/lib/arpa/data_mappers/action_mapper_spec.rb +1 -3
- data/spec/lib/arpa/data_mappers/base_spec.rb +0 -2
- data/spec/lib/arpa/data_mappers/profile_mapper_spec.rb +1 -3
- data/spec/lib/arpa/data_mappers/resource_mapper_spec.rb +1 -3
- data/spec/lib/arpa/data_mappers/role_mapper_spec.rb +1 -3
- data/spec/lib/arpa/entities/action_spec.rb +3 -6
- data/spec/lib/arpa/entities/profile_spec.rb +1 -7
- data/spec/lib/arpa/entities/resource_spec.rb +1 -9
- data/spec/lib/arpa/entities/role_spec.rb +1 -7
- data/spec/lib/arpa/repositories/actions/finder_spec.rb +1 -8
- data/spec/lib/arpa/repositories/base_spec.rb +1 -9
- data/spec/lib/arpa/repositories/profiles/finder_spec.rb +0 -6
- data/spec/lib/arpa/repositories/profiles/remover_spec.rb +0 -4
- data/spec/lib/arpa/repositories/resources/finder_spec.rb +0 -8
- data/spec/lib/arpa/repositories/resources/remover_spec.rb +0 -4
- data/spec/lib/arpa/repositories/roles/finder_spec.rb +0 -4
- data/spec/lib/arpa/repositories/roles/remover_spec.rb +0 -4
- data/spec/lib/arpa/requests/profiles/create_request_spec.rb +10 -12
- data/spec/lib/arpa/requests/profiles/remove_request_spec.rb +4 -9
- data/spec/lib/arpa/requests/resources/create_request_spec.rb +18 -21
- data/spec/lib/arpa/requests/roles/create_request_spec.rb +7 -9
- data/spec/lib/arpa/requests/roles/remove_request_spec.rb +3 -6
- data/spec/lib/arpa/requests/roles/update_request_spec.rb +7 -9
- data/spec/lib/arpa/services/actions/create/action_creator_spec.rb +5 -14
- data/spec/lib/arpa/services/actions/remove/action_remover_spec.rb +3 -6
- data/spec/lib/arpa/services/base_spec.rb +8 -15
- data/spec/lib/arpa/services/profiles/create/profile_creator_spec.rb +0 -7
- data/spec/lib/arpa/services/profiles/profile_manager_creator_spec.rb +2 -4
- data/spec/lib/arpa/services/profiles/profile_manager_remover_spec.rb +3 -6
- data/spec/lib/arpa/services/profiles/profile_manager_updater_spec.rb +2 -4
- data/spec/lib/arpa/services/profiles/remove/profile_remover_spec.rb +0 -5
- data/spec/lib/arpa/services/profiles/update/profile_updater_spec.rb +0 -7
- data/spec/lib/arpa/services/resources/create/resource_creator_spec.rb +1 -7
- data/spec/lib/arpa/services/resources/remove/resource_remover_spec.rb +2 -6
- data/spec/lib/arpa/services/resources/resource_manager_creator_spec.rb +5 -7
- data/spec/lib/arpa/services/roles/create/role_creator_spec.rb +0 -7
- data/spec/lib/arpa/services/roles/remove/role_remover_spec.rb +1 -8
- data/spec/lib/arpa/services/roles/role_manager_creator_spec.rb +2 -4
- data/spec/lib/arpa/services/roles/role_manager_remover_spec.rb +2 -4
- data/spec/lib/arpa/services/roles/role_manager_updater_spec.rb +2 -4
- data/spec/lib/arpa/services/roles/update/role_updater_spec.rb +0 -7
- data/spec/lib/arpa/services/verifier_spec.rb +3 -6
- data/spec/lib/arpa/validators/action_validator_spec.rb +0 -1
- data/spec/lib/arpa/validators/profile_validator_spec.rb +1 -2
- data/spec/lib/arpa/validators/resource_validator_spec.rb +0 -1
- data/spec/lib/arpa/validators/role_validator_spec.rb +1 -2
- data/spec/spec_helper.rb +4 -6
- data/spec/support/schema.rb +9 -10
- metadata +40 -36
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Profiles
|
4
4
|
module Remove
|
5
5
|
class ProfileRemover
|
6
|
-
|
7
6
|
def remove(entity, disable = false)
|
8
7
|
if disable
|
9
8
|
remover_repo.disable(entity)
|
@@ -17,7 +16,6 @@ module Arpa
|
|
17
16
|
def remover_repo
|
18
17
|
@remover_repo ||= Arpa::Repositories::Profiles::Remover.new
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
22
20
|
end
|
23
21
|
end
|
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Profiles
|
4
4
|
module Update
|
5
5
|
class ProfileUpdater
|
6
|
-
|
7
6
|
def update(params)
|
8
7
|
profile = profile_instance(params)
|
9
8
|
validate_profile(profile)
|
@@ -24,7 +23,6 @@ module Arpa
|
|
24
23
|
def updater_repo
|
25
24
|
@updater_repo ||= Arpa::Repositories::Profiles::Updater.new
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Resources
|
4
4
|
module Create
|
5
5
|
class ResourceCreator
|
6
|
-
|
7
6
|
def create(resourceable)
|
8
7
|
resource = resource_instance(resourceable)
|
9
8
|
|
@@ -34,7 +33,6 @@ module Arpa
|
|
34
33
|
def creator_repo
|
35
34
|
@creator_repo ||= Arpa::Repositories::Resources::Creator.new
|
36
35
|
end
|
37
|
-
|
38
36
|
end
|
39
37
|
end
|
40
38
|
end
|
@@ -3,15 +3,13 @@ module Arpa
|
|
3
3
|
module Resources
|
4
4
|
module Remove
|
5
5
|
class ResourceRemover
|
6
|
-
|
7
6
|
def remove_nonexistent_resources(resourceables)
|
8
|
-
resourceables_names = resourceables.map
|
7
|
+
resourceables_names = resourceables.map(&:to_s)
|
9
8
|
|
10
9
|
finder_repo.all.each do |resource|
|
11
10
|
exist = resourceables_names.include?(resource.full_name)
|
12
11
|
remover_repo.destroy(resource) unless exist
|
13
12
|
end
|
14
|
-
|
15
13
|
end
|
16
14
|
|
17
15
|
private
|
@@ -23,7 +21,6 @@ module Arpa
|
|
23
21
|
def remover_repo
|
24
22
|
@remover_repo ||= Arpa::Repositories::Resources::Remover.new
|
25
23
|
end
|
26
|
-
|
27
24
|
end
|
28
25
|
end
|
29
26
|
end
|
@@ -42,10 +42,9 @@ module Arpa
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def action_params(resource, resourceable, except_action_methods)
|
45
|
-
actions_names = resourceable.action_methods.
|
45
|
+
actions_names = resourceable.action_methods.reject { |action| except_action_methods.include?(action) }
|
46
46
|
{ resource: resource, actions_names: actions_names }
|
47
47
|
end
|
48
|
-
|
49
48
|
end
|
50
49
|
end
|
51
50
|
end
|
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Roles
|
4
4
|
module Create
|
5
5
|
class RoleCreator
|
6
|
-
|
7
6
|
def create(params)
|
8
7
|
role = role_instance(params)
|
9
8
|
validate_role(role)
|
@@ -24,10 +23,8 @@ module Arpa
|
|
24
23
|
def creator_repo
|
25
24
|
@creator_repo ||= Arpa::Repositories::Roles::Creator.new
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
31
29
|
end
|
32
30
|
end
|
33
|
-
|
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Roles
|
4
4
|
module Remove
|
5
5
|
class RoleRemover
|
6
|
-
|
7
6
|
def remove(entity)
|
8
7
|
if entity.has_profile?
|
9
8
|
remover_repo.disable(entity)
|
@@ -17,7 +16,6 @@ module Arpa
|
|
17
16
|
def remover_repo
|
18
17
|
@remover_repo ||= Arpa::Repositories::Roles::Remover.new
|
19
18
|
end
|
20
|
-
|
21
19
|
end
|
22
20
|
end
|
23
21
|
end
|
@@ -3,7 +3,6 @@ module Arpa
|
|
3
3
|
module Roles
|
4
4
|
module Update
|
5
5
|
class RoleUpdater
|
6
|
-
|
7
6
|
def update(params)
|
8
7
|
role = role_instance(params)
|
9
8
|
validate_role(role)
|
@@ -24,7 +23,6 @@ module Arpa
|
|
24
23
|
def updater_repo
|
25
24
|
@updater_repo ||= Arpa::Repositories::Roles::Updater.new
|
26
25
|
end
|
27
|
-
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
@@ -8,13 +8,11 @@ module Arpa
|
|
8
8
|
validates :name, :description, presence: true
|
9
9
|
validates :action_ids, presence: { message: :many_blank }
|
10
10
|
|
11
|
-
|
12
11
|
def initialize(role)
|
13
12
|
@name = role.name
|
14
13
|
@description = role.description
|
15
14
|
@action_ids = role.action_ids
|
16
15
|
end
|
17
|
-
|
18
16
|
end
|
19
17
|
end
|
20
18
|
end
|
data/lib/arpa/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Arpa
|
2
2
|
module Generators
|
3
3
|
class ControllersGenerator < Rails::Generators::Base
|
4
|
-
source_root File.expand_path(
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
5
|
|
6
6
|
def copy_resources_views_files
|
7
7
|
copy_file 'views/resources/index.html.erb', 'app/views/arpa/resources/index.html.erb'
|
@@ -31,29 +31,28 @@ module Arpa
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def add_routes
|
34
|
-
route
|
35
|
-
scope module: :arpa do
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
34
|
+
route <<~RUBY
|
35
|
+
scope module: :arpa do
|
36
|
+
resources :resources do
|
37
|
+
collection do
|
38
|
+
get 'generate_resources_and_actions'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
resources :roles do
|
43
|
+
collection do
|
44
|
+
delete ':id', to: 'roles#remove'
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
resources :profiles do
|
49
|
+
collection do
|
50
|
+
delete ':id', to: 'profiles#remove'
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
54
|
RUBY
|
55
55
|
end
|
56
|
-
|
57
56
|
end
|
58
57
|
end
|
59
58
|
end
|
@@ -3,7 +3,7 @@ module Arpa
|
|
3
3
|
class InstallGenerator < Rails::Generators::Base
|
4
4
|
include Rails::Generators::Migration
|
5
5
|
|
6
|
-
source_root File.expand_path(
|
6
|
+
source_root File.expand_path(__dir__)
|
7
7
|
|
8
8
|
desc <<-DESC.strip_heredoc
|
9
9
|
The Name of table to create the associate table.
|
@@ -11,7 +11,7 @@ module Arpa
|
|
11
11
|
E.g. users, admins.
|
12
12
|
|
13
13
|
By default is 'users'
|
14
|
-
|
14
|
+
DESC
|
15
15
|
|
16
16
|
argument :associate_table, required: false
|
17
17
|
|
@@ -25,11 +25,11 @@ module Arpa
|
|
25
25
|
argument :associate_primary_key, required: false
|
26
26
|
|
27
27
|
def self.next_migration_number(dirname)
|
28
|
-
return Time.new.utc.strftime(
|
29
|
-
|
28
|
+
return Time.new.utc.strftime('%Y%m%d%H%M%S') if ActiveRecord::Base.timestamped_migrations
|
29
|
+
format('%.3d', (current_migration_number(dirname) + 1))
|
30
30
|
end
|
31
31
|
|
32
|
-
desc
|
32
|
+
desc 'Create a migrate file with all necessery tables including the associate table.'
|
33
33
|
|
34
34
|
def create_migrate_files
|
35
35
|
@associate_table ||= 'users'
|
@@ -40,7 +40,6 @@ module Arpa
|
|
40
40
|
def copy_locales
|
41
41
|
copy_file '../../config/locales/arpa.en.yml', 'config/locales/arpa.en.yml'
|
42
42
|
end
|
43
|
-
|
44
43
|
end
|
45
44
|
end
|
46
45
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Arpa
|
2
2
|
class ProfilesController < ApplicationController
|
3
|
-
before_action :set_profile, only: [
|
3
|
+
before_action :set_profile, only: %i[show edit update remove]
|
4
4
|
|
5
5
|
# GET /profiles
|
6
6
|
def index
|
@@ -8,8 +8,7 @@ module Arpa
|
|
8
8
|
end
|
9
9
|
|
10
10
|
# GET /profiles/1
|
11
|
-
def show
|
12
|
-
end
|
11
|
+
def show; end
|
13
12
|
|
14
13
|
# GET /profiles/new
|
15
14
|
def new
|
@@ -24,49 +23,42 @@ module Arpa
|
|
24
23
|
|
25
24
|
# POST /profiles
|
26
25
|
def create
|
27
|
-
profile_creator.create({profile: profile_params},
|
28
|
-
|
29
|
-
|
30
|
-
},
|
31
|
-
fail: -> (error) {
|
32
|
-
@profile = Arpa::Entities::Profile.new(profile_params)
|
33
|
-
@error = error
|
34
|
-
all_roles
|
35
|
-
render :new
|
36
|
-
}
|
37
|
-
})
|
26
|
+
profile_creator.create({ profile: profile_params },
|
27
|
+
success: redirect_to_index(I18n.t('flash.actions.create_profile.notice')),
|
28
|
+
fail: render_errors(:new))
|
38
29
|
end
|
39
30
|
|
40
31
|
# PATCH/PUT /profiles/1
|
41
32
|
def update
|
42
|
-
profile_updater.update({profile: profile_params},
|
43
|
-
|
44
|
-
|
45
|
-
},
|
46
|
-
fail: -> (error) {
|
47
|
-
@profile = Arpa::Entities::Profile.new(profile_params)
|
48
|
-
@error = error
|
49
|
-
all_roles
|
50
|
-
render :edit
|
51
|
-
}
|
52
|
-
})
|
33
|
+
profile_updater.update({ profile: profile_params },
|
34
|
+
success: redirect_to_index(I18n.t('flash.actions.update_profile.notice')),
|
35
|
+
fail: render_errors(:edit))
|
53
36
|
end
|
54
37
|
|
55
38
|
# DELETE /profiles/1
|
56
39
|
def remove
|
57
|
-
profile_remover.remove({profile: @profile},
|
58
|
-
|
59
|
-
|
60
|
-
},
|
61
|
-
fail: -> (error) {
|
62
|
-
redirect_to profiles_path, notice: I18n.t('flash.actions.remove_profile.alert')
|
63
|
-
}
|
64
|
-
})
|
65
|
-
|
40
|
+
profile_remover.remove({ profile: @profile },
|
41
|
+
success: redirect_to_index(I18n.t('flash.actions.remove_profile.notice')),
|
42
|
+
fail: redirect_to_index(I18n.t('flash.actions.remove_profile.alert')))
|
66
43
|
end
|
67
44
|
|
68
45
|
private
|
69
46
|
|
47
|
+
def redirect_to_index(message)
|
48
|
+
lambda do |profile|
|
49
|
+
redirect_to profile_path(profile.id), notice: message
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def render_errors(action_to_render)
|
54
|
+
lambda do |error|
|
55
|
+
@profile = Arpa::Entities::Profile.new(profile_params)
|
56
|
+
@error = error
|
57
|
+
all_roles
|
58
|
+
render action_to_render
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
70
62
|
def profile_creator
|
71
63
|
@profile_creator ||= Arpa::Services::Profiles::ProfileManagerCreator.new
|
72
64
|
end
|
@@ -96,9 +88,11 @@ module Arpa
|
|
96
88
|
end
|
97
89
|
|
98
90
|
def profile_params
|
99
|
-
|
100
|
-
permit(:id, :name, :description, :entity_id, :entity_class, role_ids: [])
|
101
|
-
end
|
91
|
+
permitted_params = %i[id name description entity_id entity_class]
|
102
92
|
|
93
|
+
params.require(:profile)
|
94
|
+
.permit(permitted_params, role_ids: [])
|
95
|
+
.to_h
|
96
|
+
end
|
103
97
|
end
|
104
98
|
end
|