arpa 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +42 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +138 -0
- data/Rakefile +2 -0
- data/arpa.gemspec +33 -0
- data/lib/arpa.rb +91 -0
- data/lib/arpa/additions/resource.rb +29 -0
- data/lib/arpa/assets/stylesheets/ar_accordion.scss +80 -0
- data/lib/arpa/controllers/profiles_controller.rb +106 -0
- data/lib/arpa/controllers/resources_controller.rb +47 -0
- data/lib/arpa/controllers/roles_controller.rb +106 -0
- data/lib/arpa/data_mappers/action_mapper.rb +13 -0
- data/lib/arpa/data_mappers/base.rb +117 -0
- data/lib/arpa/data_mappers/profile_mapper.rb +14 -0
- data/lib/arpa/data_mappers/resource_mapper.rb +11 -0
- data/lib/arpa/data_mappers/role_mapper.rb +14 -0
- data/lib/arpa/entities/action.rb +24 -0
- data/lib/arpa/entities/permissions.rb +35 -0
- data/lib/arpa/entities/profile.rb +22 -0
- data/lib/arpa/entities/resource.rb +58 -0
- data/lib/arpa/entities/role.rb +28 -0
- data/lib/arpa/exceptions/record_invalid.rb +13 -0
- data/lib/arpa/repositories/actions/creator.rb +18 -0
- data/lib/arpa/repositories/actions/finder.rb +23 -0
- data/lib/arpa/repositories/actions/remover.rb +22 -0
- data/lib/arpa/repositories/actions/repository_action.rb +15 -0
- data/lib/arpa/repositories/base.rb +15 -0
- data/lib/arpa/repositories/profiles/creator.rb +18 -0
- data/lib/arpa/repositories/profiles/finder.rb +29 -0
- data/lib/arpa/repositories/profiles/remover.rb +29 -0
- data/lib/arpa/repositories/profiles/repository_profile.rb +12 -0
- data/lib/arpa/repositories/profiles/updater.rb +23 -0
- data/lib/arpa/repositories/registrator.rb +44 -0
- data/lib/arpa/repositories/resources/creator.rb +18 -0
- data/lib/arpa/repositories/resources/finder.rb +45 -0
- data/lib/arpa/repositories/resources/remover.rb +22 -0
- data/lib/arpa/repositories/resources/repository_resource.rb +12 -0
- data/lib/arpa/repositories/roles/creator.rb +18 -0
- data/lib/arpa/repositories/roles/finder.rb +29 -0
- data/lib/arpa/repositories/roles/remover.rb +29 -0
- data/lib/arpa/repositories/roles/repository_role.rb +13 -0
- data/lib/arpa/repositories/roles/updater.rb +23 -0
- data/lib/arpa/services/actions/create/action_creator.rb +50 -0
- data/lib/arpa/services/actions/remove/action_remover.rb +24 -0
- data/lib/arpa/services/base.rb +41 -0
- data/lib/arpa/services/profiles/create/profile_creator.rb +32 -0
- data/lib/arpa/services/profiles/profile_manager_creator.rb +22 -0
- data/lib/arpa/services/profiles/profile_manager_remover.rb +24 -0
- data/lib/arpa/services/profiles/profile_manager_updater.rb +22 -0
- data/lib/arpa/services/profiles/remove/profile_remover.rb +25 -0
- data/lib/arpa/services/profiles/update/profile_updater.rb +32 -0
- data/lib/arpa/services/resources/create/resource_creator.rb +42 -0
- data/lib/arpa/services/resources/remove/resource_remover.rb +31 -0
- data/lib/arpa/services/resources/resource_manager_creator.rb +50 -0
- data/lib/arpa/services/roles/create/role_creator.rb +33 -0
- data/lib/arpa/services/roles/remove/role_remover.rb +25 -0
- data/lib/arpa/services/roles/role_manager_creator.rb +23 -0
- data/lib/arpa/services/roles/role_manager_remover.rb +23 -0
- data/lib/arpa/services/roles/role_manager_updater.rb +22 -0
- data/lib/arpa/services/roles/update/role_updater.rb +32 -0
- data/lib/arpa/services/verifier.rb +24 -0
- data/lib/arpa/validators/action_validator.rb +17 -0
- data/lib/arpa/validators/profile_validator.rb +19 -0
- data/lib/arpa/validators/resource_validator.rb +17 -0
- data/lib/arpa/validators/role_validator.rb +20 -0
- data/lib/arpa/version.rb +3 -0
- data/lib/arpa/views/profiles/_form.html.erb +41 -0
- data/lib/arpa/views/profiles/edit.html.erb +6 -0
- data/lib/arpa/views/profiles/index.html.erb +29 -0
- data/lib/arpa/views/profiles/new.html.erb +5 -0
- data/lib/arpa/views/profiles/show.html.erb +37 -0
- data/lib/arpa/views/resources/index.html.erb +27 -0
- data/lib/arpa/views/resources/show.html.erb +33 -0
- data/lib/arpa/views/roles/_form.html.erb +55 -0
- data/lib/arpa/views/roles/edit.html.erb +6 -0
- data/lib/arpa/views/roles/index.html.erb +29 -0
- data/lib/arpa/views/roles/new.html.erb +5 -0
- data/lib/arpa/views/roles/show.html.erb +37 -0
- data/lib/config/locales/arpa.en.yml +38 -0
- data/lib/generators/ar/install_generator.rb +74 -0
- data/lib/generators/ar/templates/migration.rb +48 -0
- data/spec/factories/repository_actions.rb +19 -0
- data/spec/factories/repository_profiles.rb +11 -0
- data/spec/factories/repository_resources.rb +15 -0
- data/spec/factories/repository_roles.rb +11 -0
- data/spec/lib/ar/additions/resource_spec.rb +34 -0
- data/spec/lib/ar/data_mappers/action_mapper_spec.rb +46 -0
- data/spec/lib/ar/data_mappers/base_spec.rb +47 -0
- data/spec/lib/ar/data_mappers/profile_mapper_spec.rb +43 -0
- data/spec/lib/ar/data_mappers/resource_mapper_spec.rb +38 -0
- data/spec/lib/ar/data_mappers/role_mapper_spec.rb +47 -0
- data/spec/lib/ar/entities/action_spec.rb +19 -0
- data/spec/lib/ar/entities/permissions_spec.rb +61 -0
- data/spec/lib/ar/entities/resource_spec.rb +35 -0
- data/spec/lib/ar/repositories/actions/finder_spec.rb +40 -0
- data/spec/lib/ar/repositories/base_spec.rb +37 -0
- data/spec/lib/ar/repositories/profiles/finder_spec.rb +43 -0
- data/spec/lib/ar/repositories/profiles/remover_spec.rb +31 -0
- data/spec/lib/ar/repositories/resources/finder_spec.rb +92 -0
- data/spec/lib/ar/repositories/resources/remover_spec.rb +38 -0
- data/spec/lib/ar/repositories/roles/finder_spec.rb +43 -0
- data/spec/lib/ar/repositories/roles/remover_spec.rb +31 -0
- data/spec/lib/ar/requests/profiles/create_request_spec.rb +51 -0
- data/spec/lib/ar/requests/profiles/remove_request_spec.rb +36 -0
- data/spec/lib/ar/requests/resources/create_request_spec.rb +107 -0
- data/spec/lib/ar/requests/roles/create_request_spec.rb +40 -0
- data/spec/lib/ar/requests/roles/remove_request_spec.rb +23 -0
- data/spec/lib/ar/requests/roles/update_request_spec.rb +50 -0
- data/spec/lib/ar/services/actions/create/action_creator_spec.rb +88 -0
- data/spec/lib/ar/services/actions/remove/action_remover_spec.rb +36 -0
- data/spec/lib/ar/services/base_spec.rb +94 -0
- data/spec/lib/ar/services/profiles/create/profile_creator_spec.rb +68 -0
- data/spec/lib/ar/services/profiles/profile_manager_creator_spec.rb +31 -0
- data/spec/lib/ar/services/profiles/profile_manager_remover_spec.rb +44 -0
- data/spec/lib/ar/services/profiles/profile_manager_updater_spec.rb +31 -0
- data/spec/lib/ar/services/profiles/remove/profile_remover_spec.rb +45 -0
- data/spec/lib/ar/services/profiles/update/profile_updater_spec.rb +68 -0
- data/spec/lib/ar/services/resources/create/resource_creator_spec.rb +87 -0
- data/spec/lib/ar/services/resources/remove/resource_remover_spec.rb +50 -0
- data/spec/lib/ar/services/resources/resource_manager_creator_spec.rb +71 -0
- data/spec/lib/ar/services/roles/create/role_creator_spec.rb +68 -0
- data/spec/lib/ar/services/roles/remove/role_remover_spec.rb +50 -0
- data/spec/lib/ar/services/roles/role_manager_creator_spec.rb +31 -0
- data/spec/lib/ar/services/roles/role_manager_remover_spec.rb +32 -0
- data/spec/lib/ar/services/roles/role_manager_updater_spec.rb +31 -0
- data/spec/lib/ar/services/roles/update/role_updater_spec.rb +68 -0
- data/spec/lib/ar/services/verifier_spec.rb +44 -0
- data/spec/lib/ar/validators/action_validator_spec.rb +15 -0
- data/spec/lib/ar/validators/profile_validator_spec.rb +16 -0
- data/spec/lib/ar/validators/resource_validator_spec.rb +15 -0
- data/spec/lib/ar/validators/role_validator_spec.rb +16 -0
- data/spec/spec_helper.rb +33 -0
- data/spec/support/repositories/test_repository.rb +2 -0
- data/spec/support/schema.rb +58 -0
- metadata +380 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Profiles
|
4
|
+
module Update
|
5
|
+
class ProfileUpdater
|
6
|
+
|
7
|
+
def update(params)
|
8
|
+
profile = profile_instance(params)
|
9
|
+
validate_profile(profile)
|
10
|
+
updater_repo.update(profile)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def profile_instance(params)
|
16
|
+
Arpa::Entities::Profile.new(params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def validate_profile(profile)
|
20
|
+
validator = Arpa::Validators::ProfileValidator.new(profile)
|
21
|
+
raise Arpa::Exceptions::RecordInvalid.new(message: validator.errors.messages, errors: validator.errors) unless validator.valid?
|
22
|
+
end
|
23
|
+
|
24
|
+
def updater_repo
|
25
|
+
@updater_repo ||= Arpa::Repositories::Profiles::Updater.new
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Resources
|
4
|
+
module Create
|
5
|
+
class ResourceCreator
|
6
|
+
|
7
|
+
def create(resourceable)
|
8
|
+
resource = resource_instance(resourceable)
|
9
|
+
|
10
|
+
resource_found = finder_repo.by_full_name(resource.full_name)
|
11
|
+
return resource_found if resource_found
|
12
|
+
|
13
|
+
validate_resource(resource)
|
14
|
+
creator_repo.create(resource)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def resource_instance(resourceable)
|
20
|
+
resource = Arpa::Entities::Resource.new(full_name: resourceable.to_s)
|
21
|
+
resource.build_correct_name
|
22
|
+
resource
|
23
|
+
end
|
24
|
+
|
25
|
+
def validate_resource(resource)
|
26
|
+
validator = Arpa::Validators::ResourceValidator.new(resource)
|
27
|
+
raise Arpa::Exceptions::RecordInvalid.new(message: validator.errors.messages, errors: validator.errors) unless validator.valid?
|
28
|
+
end
|
29
|
+
|
30
|
+
def finder_repo
|
31
|
+
@finder_repo ||= Arpa::Repositories::Resources::Finder.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def creator_repo
|
35
|
+
@creator_repo ||= Arpa::Repositories::Resources::Creator.new
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Resources
|
4
|
+
module Remove
|
5
|
+
class ResourceRemover
|
6
|
+
|
7
|
+
def remove_nonexistent_resources(resourceables)
|
8
|
+
resourceables_names = resourceables.map { |r| r.to_s }
|
9
|
+
|
10
|
+
finder_repo.all.each do |resource|
|
11
|
+
exist = resourceables_names.include?(resource.full_name)
|
12
|
+
remover_repo.destroy(resource) unless exist
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def finder_repo
|
20
|
+
@finder_repo ||= Arpa::Repositories::Resources::Finder.new
|
21
|
+
end
|
22
|
+
|
23
|
+
def remover_repo
|
24
|
+
@remover_repo ||= Arpa::Repositories::Resources::Remover.new
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Resources
|
4
|
+
class ResourceManagerCreator
|
5
|
+
include Arpa::Services::Base
|
6
|
+
|
7
|
+
def create(params, callback)
|
8
|
+
manager_action callback do
|
9
|
+
resourceables = params[:resourceables]
|
10
|
+
|
11
|
+
resource_remover.remove_nonexistent_resources(resourceables)
|
12
|
+
|
13
|
+
resourceables.collect do |resourceable|
|
14
|
+
resource = resource_creator.create(resourceable)
|
15
|
+
action_params = action_params(resource, resourceable)
|
16
|
+
|
17
|
+
action_remover.remove_nonexistent_actions(action_params)
|
18
|
+
action_creator.create_many(action_params)
|
19
|
+
|
20
|
+
resource
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def resource_remover
|
28
|
+
@resource_remover ||= Arpa::Services::Resources::Remove::ResourceRemover.new
|
29
|
+
end
|
30
|
+
|
31
|
+
def action_remover
|
32
|
+
@action_remover ||= Arpa::Services::Actions::Remove::ActionRemover.new
|
33
|
+
end
|
34
|
+
|
35
|
+
def resource_creator
|
36
|
+
@resource_creator ||= Arpa::Services::Resources::Create::ResourceCreator.new
|
37
|
+
end
|
38
|
+
|
39
|
+
def action_creator
|
40
|
+
@action_creator ||= Arpa::Services::Actions::Create::ActionCreator.new
|
41
|
+
end
|
42
|
+
|
43
|
+
def action_params(resource, resourceable)
|
44
|
+
{resource: resource, actions_names: resourceable.action_methods}
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
module Create
|
5
|
+
class RoleCreator
|
6
|
+
|
7
|
+
def create(params)
|
8
|
+
role = role_instance(params)
|
9
|
+
validate_role(role)
|
10
|
+
creator_repo.create(role)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def role_instance(params)
|
16
|
+
Arpa::Entities::Role.new(params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def validate_role(role)
|
20
|
+
validator = Arpa::Validators::RoleValidator.new(role)
|
21
|
+
raise Arpa::Exceptions::RecordInvalid.new(message: validator.errors.messages, errors: validator.errors) unless validator.valid?
|
22
|
+
end
|
23
|
+
|
24
|
+
def creator_repo
|
25
|
+
@creator_repo ||= Arpa::Repositories::Roles::Creator.new
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
module Remove
|
5
|
+
class RoleRemover
|
6
|
+
|
7
|
+
def remove(entity)
|
8
|
+
if entity.has_profile?
|
9
|
+
remover_repo.disable(entity)
|
10
|
+
else
|
11
|
+
remover_repo.destroy(entity)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def remover_repo
|
18
|
+
@remover_repo ||= Arpa::Repositories::Roles::Remover.new
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
class RoleManagerCreator
|
5
|
+
include Arpa::Services::Base
|
6
|
+
|
7
|
+
def create(params, callback)
|
8
|
+
manager_action callback do
|
9
|
+
role_creator.create(params[:role])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def role_creator
|
16
|
+
@role_creator ||= Arpa::Services::Roles::Create::RoleCreator.new
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
class RoleManagerRemover
|
5
|
+
include Arpa::Services::Base
|
6
|
+
|
7
|
+
def remove(params, callback)
|
8
|
+
manager_action callback do
|
9
|
+
role = params[:role]
|
10
|
+
role_remover.remove(role)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def role_remover
|
17
|
+
@role_remover ||= Arpa::Services::Roles::Remove::RoleRemover.new
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
class RoleManagerUpdater
|
5
|
+
include Arpa::Services::Base
|
6
|
+
|
7
|
+
def update(params, callback)
|
8
|
+
manager_action callback do
|
9
|
+
role_updater.update(params[:role])
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def role_updater
|
16
|
+
@role_updater ||= Arpa::Services::Roles::Update::RoleUpdater.new
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
module Roles
|
4
|
+
module Update
|
5
|
+
class RoleUpdater
|
6
|
+
|
7
|
+
def update(params)
|
8
|
+
role = role_instance(params)
|
9
|
+
validate_role(role)
|
10
|
+
updater_repo.update(role)
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def role_instance(params)
|
16
|
+
Arpa::Entities::Role.new(params)
|
17
|
+
end
|
18
|
+
|
19
|
+
def validate_role(role)
|
20
|
+
validator = Arpa::Validators::RoleValidator.new(role)
|
21
|
+
raise Arpa::Exceptions::RecordInvalid.new(message: validator.errors.messages, errors: validator.errors) unless validator.valid?
|
22
|
+
end
|
23
|
+
|
24
|
+
def updater_repo
|
25
|
+
@updater_repo ||= Arpa::Repositories::Roles::Updater.new
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Services
|
3
|
+
class Verifier
|
4
|
+
|
5
|
+
def initialize(session, current_user)
|
6
|
+
@session = session
|
7
|
+
@current_user = current_user
|
8
|
+
end
|
9
|
+
|
10
|
+
def has_access?(resource, action)
|
11
|
+
free_access_action = action.to_s.split('_')[0]
|
12
|
+
return true if free_access_action.empty?
|
13
|
+
@session[:entity_permissions] ||= resource_finder.permissions(@current_user.profile_ids)
|
14
|
+
@session[:entity_permissions].has_permission?(resource.to_s, action.to_s)
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
def resource_finder
|
20
|
+
@resource_finder ||= Arpa::Repositories::Resources::Finder.new
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Validators
|
3
|
+
class ActionValidator
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
attr_reader :name, :resource_id
|
7
|
+
|
8
|
+
validates :name, :resource_id, presence: true
|
9
|
+
|
10
|
+
def initialize(action)
|
11
|
+
@name = action.name
|
12
|
+
@resource_id = action.resource_id
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Validators
|
3
|
+
class ProfileValidator
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
attr_reader :name, :description, :role_ids
|
7
|
+
|
8
|
+
validates :name, :description, presence: true
|
9
|
+
validates :role_ids, presence: { message: :many_blank }
|
10
|
+
|
11
|
+
def initialize(profile)
|
12
|
+
@name = profile.name
|
13
|
+
@description = profile.description
|
14
|
+
@role_ids = profile.role_ids
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Validators
|
3
|
+
class ResourceValidator
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
attr_reader :full_name, :name
|
7
|
+
|
8
|
+
validates :full_name, :name, presence: true
|
9
|
+
|
10
|
+
def initialize(resource)
|
11
|
+
@full_name = resource.full_name
|
12
|
+
@name = resource.name
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Arpa
|
2
|
+
module Validators
|
3
|
+
class RoleValidator
|
4
|
+
include ActiveModel::Validations
|
5
|
+
|
6
|
+
attr_reader :name, :description, :action_ids
|
7
|
+
|
8
|
+
validates :name, :description, presence: true
|
9
|
+
validates :action_ids, presence: { message: :many_blank }
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(role)
|
13
|
+
@name = role.name
|
14
|
+
@description = role.description
|
15
|
+
@action_ids = role.action_ids
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/lib/arpa/version.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
<%= form_for(:profile, url: {action: action}, method: method) do |f| %>
|
2
|
+
<% if @error.present? && @error.errors.any? %>
|
3
|
+
<div id="error_explanation">
|
4
|
+
<h2><%= pluralize(@error.errors.count, "error") %> prohibited this user from being saved:</h2>
|
5
|
+
|
6
|
+
<ul>
|
7
|
+
<% @error.errors.full_messages.each do |message| %>
|
8
|
+
<li><%= message %></li>
|
9
|
+
<% end %>
|
10
|
+
</ul>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
|
14
|
+
<%= f.hidden_field :id, value: @profile.id %>
|
15
|
+
|
16
|
+
<div class="field">
|
17
|
+
<%= f.label :name %><br>
|
18
|
+
<%= f.text_field :name %>
|
19
|
+
</div>
|
20
|
+
|
21
|
+
<div class="field">
|
22
|
+
<%= f.label :description %><br>
|
23
|
+
<%= f.text_field :description %>
|
24
|
+
</div>
|
25
|
+
|
26
|
+
<div class="field">
|
27
|
+
|
28
|
+
<% @roles.each do |role| %>
|
29
|
+
<div>
|
30
|
+
<input type="checkbox" name="profile[role_ids][]" value="<%= role.id %>" <%= checked="checked" if @profile.role_ids.include?(role.id) %> >
|
31
|
+
<%= "#{role.name} - #{role.description}"%>
|
32
|
+
</div>
|
33
|
+
<% end %>
|
34
|
+
|
35
|
+
</div>
|
36
|
+
|
37
|
+
<div class="actions">
|
38
|
+
<%= f.submit %>
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<% end %>
|