arpa 0.0.2

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.
Files changed (139) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +42 -0
  3. data/.ruby-gemset +1 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE.txt +22 -0
  7. data/README.md +138 -0
  8. data/Rakefile +2 -0
  9. data/arpa.gemspec +33 -0
  10. data/lib/arpa.rb +91 -0
  11. data/lib/arpa/additions/resource.rb +29 -0
  12. data/lib/arpa/assets/stylesheets/ar_accordion.scss +80 -0
  13. data/lib/arpa/controllers/profiles_controller.rb +106 -0
  14. data/lib/arpa/controllers/resources_controller.rb +47 -0
  15. data/lib/arpa/controllers/roles_controller.rb +106 -0
  16. data/lib/arpa/data_mappers/action_mapper.rb +13 -0
  17. data/lib/arpa/data_mappers/base.rb +117 -0
  18. data/lib/arpa/data_mappers/profile_mapper.rb +14 -0
  19. data/lib/arpa/data_mappers/resource_mapper.rb +11 -0
  20. data/lib/arpa/data_mappers/role_mapper.rb +14 -0
  21. data/lib/arpa/entities/action.rb +24 -0
  22. data/lib/arpa/entities/permissions.rb +35 -0
  23. data/lib/arpa/entities/profile.rb +22 -0
  24. data/lib/arpa/entities/resource.rb +58 -0
  25. data/lib/arpa/entities/role.rb +28 -0
  26. data/lib/arpa/exceptions/record_invalid.rb +13 -0
  27. data/lib/arpa/repositories/actions/creator.rb +18 -0
  28. data/lib/arpa/repositories/actions/finder.rb +23 -0
  29. data/lib/arpa/repositories/actions/remover.rb +22 -0
  30. data/lib/arpa/repositories/actions/repository_action.rb +15 -0
  31. data/lib/arpa/repositories/base.rb +15 -0
  32. data/lib/arpa/repositories/profiles/creator.rb +18 -0
  33. data/lib/arpa/repositories/profiles/finder.rb +29 -0
  34. data/lib/arpa/repositories/profiles/remover.rb +29 -0
  35. data/lib/arpa/repositories/profiles/repository_profile.rb +12 -0
  36. data/lib/arpa/repositories/profiles/updater.rb +23 -0
  37. data/lib/arpa/repositories/registrator.rb +44 -0
  38. data/lib/arpa/repositories/resources/creator.rb +18 -0
  39. data/lib/arpa/repositories/resources/finder.rb +45 -0
  40. data/lib/arpa/repositories/resources/remover.rb +22 -0
  41. data/lib/arpa/repositories/resources/repository_resource.rb +12 -0
  42. data/lib/arpa/repositories/roles/creator.rb +18 -0
  43. data/lib/arpa/repositories/roles/finder.rb +29 -0
  44. data/lib/arpa/repositories/roles/remover.rb +29 -0
  45. data/lib/arpa/repositories/roles/repository_role.rb +13 -0
  46. data/lib/arpa/repositories/roles/updater.rb +23 -0
  47. data/lib/arpa/services/actions/create/action_creator.rb +50 -0
  48. data/lib/arpa/services/actions/remove/action_remover.rb +24 -0
  49. data/lib/arpa/services/base.rb +41 -0
  50. data/lib/arpa/services/profiles/create/profile_creator.rb +32 -0
  51. data/lib/arpa/services/profiles/profile_manager_creator.rb +22 -0
  52. data/lib/arpa/services/profiles/profile_manager_remover.rb +24 -0
  53. data/lib/arpa/services/profiles/profile_manager_updater.rb +22 -0
  54. data/lib/arpa/services/profiles/remove/profile_remover.rb +25 -0
  55. data/lib/arpa/services/profiles/update/profile_updater.rb +32 -0
  56. data/lib/arpa/services/resources/create/resource_creator.rb +42 -0
  57. data/lib/arpa/services/resources/remove/resource_remover.rb +31 -0
  58. data/lib/arpa/services/resources/resource_manager_creator.rb +50 -0
  59. data/lib/arpa/services/roles/create/role_creator.rb +33 -0
  60. data/lib/arpa/services/roles/remove/role_remover.rb +25 -0
  61. data/lib/arpa/services/roles/role_manager_creator.rb +23 -0
  62. data/lib/arpa/services/roles/role_manager_remover.rb +23 -0
  63. data/lib/arpa/services/roles/role_manager_updater.rb +22 -0
  64. data/lib/arpa/services/roles/update/role_updater.rb +32 -0
  65. data/lib/arpa/services/verifier.rb +24 -0
  66. data/lib/arpa/validators/action_validator.rb +17 -0
  67. data/lib/arpa/validators/profile_validator.rb +19 -0
  68. data/lib/arpa/validators/resource_validator.rb +17 -0
  69. data/lib/arpa/validators/role_validator.rb +20 -0
  70. data/lib/arpa/version.rb +3 -0
  71. data/lib/arpa/views/profiles/_form.html.erb +41 -0
  72. data/lib/arpa/views/profiles/edit.html.erb +6 -0
  73. data/lib/arpa/views/profiles/index.html.erb +29 -0
  74. data/lib/arpa/views/profiles/new.html.erb +5 -0
  75. data/lib/arpa/views/profiles/show.html.erb +37 -0
  76. data/lib/arpa/views/resources/index.html.erb +27 -0
  77. data/lib/arpa/views/resources/show.html.erb +33 -0
  78. data/lib/arpa/views/roles/_form.html.erb +55 -0
  79. data/lib/arpa/views/roles/edit.html.erb +6 -0
  80. data/lib/arpa/views/roles/index.html.erb +29 -0
  81. data/lib/arpa/views/roles/new.html.erb +5 -0
  82. data/lib/arpa/views/roles/show.html.erb +37 -0
  83. data/lib/config/locales/arpa.en.yml +38 -0
  84. data/lib/generators/ar/install_generator.rb +74 -0
  85. data/lib/generators/ar/templates/migration.rb +48 -0
  86. data/spec/factories/repository_actions.rb +19 -0
  87. data/spec/factories/repository_profiles.rb +11 -0
  88. data/spec/factories/repository_resources.rb +15 -0
  89. data/spec/factories/repository_roles.rb +11 -0
  90. data/spec/lib/ar/additions/resource_spec.rb +34 -0
  91. data/spec/lib/ar/data_mappers/action_mapper_spec.rb +46 -0
  92. data/spec/lib/ar/data_mappers/base_spec.rb +47 -0
  93. data/spec/lib/ar/data_mappers/profile_mapper_spec.rb +43 -0
  94. data/spec/lib/ar/data_mappers/resource_mapper_spec.rb +38 -0
  95. data/spec/lib/ar/data_mappers/role_mapper_spec.rb +47 -0
  96. data/spec/lib/ar/entities/action_spec.rb +19 -0
  97. data/spec/lib/ar/entities/permissions_spec.rb +61 -0
  98. data/spec/lib/ar/entities/resource_spec.rb +35 -0
  99. data/spec/lib/ar/repositories/actions/finder_spec.rb +40 -0
  100. data/spec/lib/ar/repositories/base_spec.rb +37 -0
  101. data/spec/lib/ar/repositories/profiles/finder_spec.rb +43 -0
  102. data/spec/lib/ar/repositories/profiles/remover_spec.rb +31 -0
  103. data/spec/lib/ar/repositories/resources/finder_spec.rb +92 -0
  104. data/spec/lib/ar/repositories/resources/remover_spec.rb +38 -0
  105. data/spec/lib/ar/repositories/roles/finder_spec.rb +43 -0
  106. data/spec/lib/ar/repositories/roles/remover_spec.rb +31 -0
  107. data/spec/lib/ar/requests/profiles/create_request_spec.rb +51 -0
  108. data/spec/lib/ar/requests/profiles/remove_request_spec.rb +36 -0
  109. data/spec/lib/ar/requests/resources/create_request_spec.rb +107 -0
  110. data/spec/lib/ar/requests/roles/create_request_spec.rb +40 -0
  111. data/spec/lib/ar/requests/roles/remove_request_spec.rb +23 -0
  112. data/spec/lib/ar/requests/roles/update_request_spec.rb +50 -0
  113. data/spec/lib/ar/services/actions/create/action_creator_spec.rb +88 -0
  114. data/spec/lib/ar/services/actions/remove/action_remover_spec.rb +36 -0
  115. data/spec/lib/ar/services/base_spec.rb +94 -0
  116. data/spec/lib/ar/services/profiles/create/profile_creator_spec.rb +68 -0
  117. data/spec/lib/ar/services/profiles/profile_manager_creator_spec.rb +31 -0
  118. data/spec/lib/ar/services/profiles/profile_manager_remover_spec.rb +44 -0
  119. data/spec/lib/ar/services/profiles/profile_manager_updater_spec.rb +31 -0
  120. data/spec/lib/ar/services/profiles/remove/profile_remover_spec.rb +45 -0
  121. data/spec/lib/ar/services/profiles/update/profile_updater_spec.rb +68 -0
  122. data/spec/lib/ar/services/resources/create/resource_creator_spec.rb +87 -0
  123. data/spec/lib/ar/services/resources/remove/resource_remover_spec.rb +50 -0
  124. data/spec/lib/ar/services/resources/resource_manager_creator_spec.rb +71 -0
  125. data/spec/lib/ar/services/roles/create/role_creator_spec.rb +68 -0
  126. data/spec/lib/ar/services/roles/remove/role_remover_spec.rb +50 -0
  127. data/spec/lib/ar/services/roles/role_manager_creator_spec.rb +31 -0
  128. data/spec/lib/ar/services/roles/role_manager_remover_spec.rb +32 -0
  129. data/spec/lib/ar/services/roles/role_manager_updater_spec.rb +31 -0
  130. data/spec/lib/ar/services/roles/update/role_updater_spec.rb +68 -0
  131. data/spec/lib/ar/services/verifier_spec.rb +44 -0
  132. data/spec/lib/ar/validators/action_validator_spec.rb +15 -0
  133. data/spec/lib/ar/validators/profile_validator_spec.rb +16 -0
  134. data/spec/lib/ar/validators/resource_validator_spec.rb +15 -0
  135. data/spec/lib/ar/validators/role_validator_spec.rb +16 -0
  136. data/spec/spec_helper.rb +33 -0
  137. data/spec/support/repositories/test_repository.rb +2 -0
  138. data/spec/support/schema.rb +58 -0
  139. metadata +380 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8b1918d1807d5e006ce34bcb7eae4c495a605930
4
+ data.tar.gz: 0e9320f97b278352163636d3b562aec0f81b1b3f
5
+ SHA512:
6
+ metadata.gz: 93f5bd0a9df3c2c088c95dd337cf5c106d240149a138ab0373d44752f46988847286dff718a1f12b15c9093f39524ec7e9f325d268a9040fb46101e5320d13d9
7
+ data.tar.gz: c213426b20ee6c4b164a6be60a06f6af6656642c8363ccd6b3a07e3400781a4f86c0653ff9558ed9295f7c0e9970900c16aacb86bf945d13eab6a61abcfa58c4
@@ -0,0 +1,42 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ *.sqlite3
10
+ /tmp/
11
+ *.bundle
12
+ *.so
13
+ *.o
14
+ *.a
15
+ mkmf.log
16
+
17
+ # scm revert files
18
+ **.orig
19
+
20
+ # Mac finder artifacts
21
+ .DS_Store
22
+
23
+ # RubyMine project files
24
+ .idea
25
+
26
+ # vim artifacts
27
+ **.swp
28
+
29
+ # Environment files that may contain sensitive data
30
+ .env
31
+ .powenv
32
+
33
+ # Ignoring .keep files
34
+ .keep
35
+
36
+ # Elastic Beanstalk Files
37
+ .elasticbeanstalk/*
38
+ !.elasticbeanstalk/*.cfg.yml
39
+ !.elasticbeanstalk/*.global.yml
40
+
41
+ Procfile
42
+ .vagrant
@@ -0,0 +1 @@
1
+ arpa
@@ -0,0 +1 @@
1
+ ruby-2.2.0
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in arpa.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2015 Rachid Calazans
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,138 @@
1
+ #Arpa
2
+
3
+ Authorization Gem for Ruby and Ruby on Rails projects.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'arpa'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install arpa
20
+
21
+ After you install Ar and add it to your Gemfile, you need to run the generator:
22
+
23
+ $ rails generate arpa:install
24
+
25
+ This command will create some files that are needed to run the Gem.
26
+
27
+ | File | Purpose |
28
+ |----------|:-------------:|
29
+ | db/migrate/20140120201010_create_arpa_tables.rb | Migration to create the all **Ar** tables in your database (your name will include a different timestamp) |
30
+ | config/locales/arpa.en.yml | Locales to use in Ar classes |
31
+ | app/assets/stylesheets/arpa/arpa_accordion.scss | Basic stylesheet to use with Ar views |
32
+ | app/controllers/arpa/resources_controller.rb app/controllers/arpa/roles_controller.rb app/controllers/arpa/profiles_controller.rb | Controllers to use the CRUD actions for each one |
33
+ | app/views/arpa/resources/ app/controllers/arpa/roles/ app/controllers/arpa/profiles/ | All views to use the CRUD actions for each controller above |
34
+ | config/routes.rb | Will add all routes into this file with all resources of Ar |
35
+
36
+ After generate, you need to run the migration to create all Ar tables:
37
+
38
+ $ rake db:migrate
39
+
40
+ **Obs.:** The migration file will create a associate table between **Profiles** and **Users** (the Users must exist in your Application before adding the Gem)
41
+
42
+ ## Usage
43
+
44
+ First of all you must create the Resources, Roles and Profiles (each is avaliable in the paths listed above). After that you need associate **Profiles** with **User** (to do this, you need create by your own the associate form view, saving some profiles in some user). Done that you can use some Helpers generated by Ar.
45
+
46
+ ### Association between Profiles and Users
47
+
48
+ You just need have a method called **:profile_ids** inside the User model. This method should return a list of ids from profiles associated in the user.
49
+
50
+ You just add a HBTM association in User model:
51
+
52
+ ```ruby
53
+ class User < ActiveRecord::Base
54
+ has_and_belongs_to_many :profiles, class_name: 'Ar::Repositories::Profiles::RepositoryProfile'
55
+ end
56
+ ```
57
+ With this you will be able to use the :profile_ids method.
58
+
59
+ ### Controller helpers
60
+
61
+ Ar will create some helpers to use inside your controllers and views.
62
+
63
+ To verify if a user has access to some :controler and :action, use the following helper:
64
+
65
+ ```ruby
66
+ has_access?('users', 'index')
67
+ ```
68
+ **Obs.:** To that helper method works. You must have **:session** (In Rails app already has) and **:current_user** attribute or method.
69
+
70
+ ---
71
+ If you want use that method inside another object you should use the **Ar::Services::Verifier** class;
72
+
73
+ You just need pass as arguments the :session and :current_user:
74
+
75
+ ```ruby
76
+ verifier = Ar::Services::Verifier.new(session, current_user)
77
+ verifier.has_access?('users', 'index')
78
+ ```
79
+
80
+ ### Controller Filter
81
+
82
+ If you want create a filter to verify if the current_user has access and if not redirect to another route you can do this:
83
+
84
+ Create a method in ApplicationController and add as a before_filter callback from rails:
85
+
86
+ ```ruby
87
+ class ApplicationController < ActionController::Base
88
+ before_filter :authorize_user
89
+
90
+ def authorize_user
91
+ controller = params[:controller]
92
+ action = params[:action]
93
+ redirect_to some_url unless has_access?(controller, action
94
+ end
95
+
96
+ end
97
+ ```
98
+
99
+ **Obs.:** The **has_access?** method come from Controller Helper method which Ar gem has been created.
100
+
101
+
102
+ ## Information
103
+
104
+ After generate, you will be able to access some paths for each Controller created:
105
+
106
+ ```ruby
107
+ generate_resources_and_actions_resources GET /resources/generate_resources_and_actions(.:format) arpa/resources#generate_resources_and_actions
108
+ resources GET /resources(.:format) arpa/resources#index
109
+ POST /resources(.:format) arpa/resources#create
110
+ new_resource GET /resources/new(.:format) arpa/resources#new
111
+ edit_resource GET /resources/:id/edit(.:format) arpa/resources#edit
112
+ resource GET /resources/:id(.:format) arpa/resources#show
113
+ PATCH /resources/:id(.:format) arpa/resources#update
114
+ PUT /resources/:id(.:format) arpa/resources#update
115
+ DELETE /resources/:id(.:format) arpa/resources#destroy
116
+ DELETE /roles/:id(.:format) arpa/roles#remove
117
+ roles GET /roles(.:format) arpa/roles#index
118
+ POST /roles(.:format) arpa/roles#create
119
+ new_role GET /roles/new(.:format) arpa/roles#new
120
+ edit_role GET /roles/:id/edit(.:format) arpa/roles#edit
121
+ role GET /roles/:id(.:format) arpa/roles#show
122
+ PATCH /roles/:id(.:format) arpa/roles#update
123
+ PUT /roles/:id(.:format) arpa/roles#update
124
+ DELETE /roles/:id(.:format) arpa/roles#destroy
125
+ DELETE /profiles/:id(.:format) arpa/profiles#remove
126
+ profiles GET /profiles(.:format) arpa/profiles#index
127
+ POST /profiles(.:format) arpa/profiles#create
128
+ new_profile GET /profiles/new(.:format) arpa/profiles#new
129
+ edit_profile GET /profiles/:id/edit(.:format) arpa/profiles#edit
130
+ profile GET /profiles/:id(.:format) arpa/profiles#show
131
+ PATCH /profiles/:id(.:format) arpa/profiles#update
132
+ PUT /profiles/:id(.:format) arpa/profiles#update
133
+ DELETE /profiles/:id(.:format) arpa/profiles#destroy
134
+ ```
135
+
136
+ ## License
137
+
138
+ MIT License. Copyright Rachid Calazans.
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'arpa/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "arpa"
8
+ spec.version = Arpa::VERSION
9
+ spec.authors = ["Rachid Calazans"]
10
+ spec.summary = "Authorization Gem for Ruby and Ruby on Rails projects"
11
+ spec.email = ["rachidcalazans@gmail.com"]
12
+ spec.license = "MIT"
13
+ spec.homepage = "https://github.com/rachidcalazans/arpa"
14
+ spec.description = "Authorization Gem for Ruby and Ruby on Rails projects"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ spec.add_development_dependency "rspec", "~> 3.3.0"
24
+ spec.add_development_dependency "factory_girl"
25
+ spec.add_development_dependency "sqlite3", "~> 1.3.3"
26
+ spec.add_development_dependency "database_cleaner"
27
+ spec.add_development_dependency "pry"
28
+
29
+ spec.add_dependency "activerecord", ">= 4.2.0"
30
+ spec.add_dependency "railties", ">= 4.2.0", "< 5"
31
+ spec.add_dependency "responders", "~> 2.0"
32
+
33
+ end
@@ -0,0 +1,91 @@
1
+ require "arpa/version"
2
+ require "rails/railtie"
3
+
4
+ # Additions
5
+ require "arpa/additions/resource"
6
+
7
+ # Exceptions
8
+ require "arpa/exceptions/record_invalid"
9
+
10
+ # Entities
11
+ require "arpa/entities/resource"
12
+ require "arpa/entities/action"
13
+ require "arpa/entities/role"
14
+ require "arpa/entities/profile"
15
+ require "arpa/entities/permissions"
16
+
17
+ # Mappers
18
+ require "arpa/data_mappers/base"
19
+ require "arpa/data_mappers/resource_mapper"
20
+ require "arpa/data_mappers/action_mapper"
21
+ require "arpa/data_mappers/role_mapper"
22
+ require "arpa/data_mappers/profile_mapper"
23
+
24
+ # Validators
25
+ require "arpa/validators/resource_validator"
26
+ require "arpa/validators/action_validator"
27
+ require "arpa/validators/role_validator"
28
+ require "arpa/validators/profile_validator"
29
+
30
+ # Repositories
31
+ require "arpa/repositories/base"
32
+ require "arpa/repositories/registrator"
33
+
34
+ require "arpa/repositories/resources/repository_resource"
35
+ require "arpa/repositories/resources/finder"
36
+ require "arpa/repositories/resources/remover"
37
+ require "arpa/repositories/resources/creator"
38
+
39
+ require "arpa/repositories/actions/repository_action"
40
+ require "arpa/repositories/actions/finder"
41
+ require "arpa/repositories/actions/remover"
42
+ require "arpa/repositories/actions/creator"
43
+
44
+ require "arpa/repositories/roles/repository_role"
45
+ require "arpa/repositories/roles/finder"
46
+ require "arpa/repositories/roles/creator"
47
+ require "arpa/repositories/roles/updater"
48
+ require "arpa/repositories/roles/remover"
49
+
50
+ require "arpa/repositories/profiles/repository_profile"
51
+ require "arpa/repositories/profiles/finder"
52
+ require "arpa/repositories/profiles/creator"
53
+ require "arpa/repositories/profiles/updater"
54
+ require "arpa/repositories/profiles/remover"
55
+
56
+ # Services
57
+ require "arpa/services/base"
58
+ require "arpa/services/verifier"
59
+
60
+ require "arpa/services/actions/create/action_creator"
61
+ require "arpa/services/actions/remove/action_remover"
62
+
63
+ require "arpa/services/resources/create/resource_creator"
64
+ require "arpa/services/resources/remove/resource_remover"
65
+ require "arpa/services/resources/resource_manager_creator"
66
+
67
+ require "arpa/services/roles/role_manager_creator"
68
+ require "arpa/services/roles/role_manager_updater"
69
+ require "arpa/services/roles/role_manager_remover"
70
+ require "arpa/services/roles/create/role_creator"
71
+ require "arpa/services/roles/update/role_updater"
72
+ require "arpa/services/roles/remove/role_remover"
73
+
74
+ require "arpa/services/profiles/profile_manager_creator"
75
+ require "arpa/services/profiles/profile_manager_updater"
76
+ require "arpa/services/profiles/profile_manager_remover"
77
+ require "arpa/services/profiles/create/profile_creator"
78
+ require "arpa/services/profiles/update/profile_updater"
79
+ require "arpa/services/profiles/remove/profile_remover"
80
+
81
+ module Arpa
82
+
83
+ class Railtie < ::Rails::Railtie
84
+ initializer "arpa.configure_view_controller" do |app|
85
+ ActiveSupport.on_load :action_controller do
86
+ include Ar::Additions::Resource
87
+ end
88
+ end
89
+ end
90
+
91
+ end
@@ -0,0 +1,29 @@
1
+ module Arpa
2
+ module Additions
3
+ module Resource
4
+
5
+ def self.included(base)
6
+ base.helper_method :has_access?
7
+ end
8
+
9
+ def has_access?(resource, action)
10
+ return unless has_session_or_current_user?
11
+ @verifier ||= Arpa::Services::Verifier.new(session, current_user)
12
+ @verifier.has_access?(resource, action)
13
+ end
14
+
15
+ private
16
+
17
+ def has_session_or_current_user?
18
+ sess = try(:session)
19
+ c_user = try(:current_user)
20
+ return true if sess && c_user
21
+ log = Logger.new(STDOUT)
22
+ log.warn("The ApplicationController must has a attribute or method 'session'") unless sess
23
+ log.warn("The ApplicationController must has a attribute or method 'current_user'") unless c_user
24
+ false
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,80 @@
1
+ // ArpaAccordion
2
+ .arpa-accordion {
3
+ margin: 10px auto 30px auto;
4
+ text-align: left;
5
+
6
+ .arpa-accordion-title {
7
+ position: relative;
8
+ z-index: 20;
9
+ display: block;
10
+ padding: 10px 12px;
11
+ cursor: pointer;
12
+ color: #555;
13
+ font-size: 18px;
14
+ font-weight: bold;
15
+ background: #fff;
16
+ border: 1px solid #cfcfcf;
17
+
18
+ &:hover{
19
+ background: #fff;
20
+ }
21
+ }
22
+
23
+ .arpa-accordion-input {
24
+ display: none;
25
+
26
+ &:checked + .arpa-accordion-item {
27
+ box-shadow: 3px 3px 3px red;
28
+ }
29
+
30
+ &:checked + .arpa-accordion-title,
31
+ &:checked + .arpa-accordion-title:hover {
32
+ margin-bottom: 0;
33
+ border-bottom: none;
34
+ }
35
+
36
+ &:checked + .arpa-accordion-title {
37
+ border-color: #bbb;
38
+
39
+ &:after {
40
+ background: none;
41
+ }
42
+ }
43
+
44
+ &:checked ~ .arpa-accordion-content {
45
+ padding: 10px 20px 0;
46
+ margin-bottom: 10px;
47
+ max-height: 9999999px;
48
+ border: 1px solid #bbb;
49
+ opacity: 1;
50
+ }
51
+ }
52
+
53
+ .arpa-accordion-title {
54
+ &:after {
55
+ content: '';
56
+ position: absolute;
57
+ width: 24px;
58
+ height: 24px;
59
+ right: 13px;
60
+ top: 7px;
61
+ // background: url(image-path("arpa-accordion-arrow.png")) -6px -6px;
62
+ }
63
+
64
+ &:hover {
65
+ &:after {
66
+ background-position: -6px -42px;
67
+ }
68
+ }
69
+ }
70
+
71
+ .arpa-accordion-content {
72
+ z-index: 10;
73
+ position: relative;
74
+ padding: 0 20px;
75
+ max-height: 0px;
76
+ background: #fafafa;
77
+ overflow: hidden;
78
+ opacity: 0;
79
+ }
80
+ }