curupira 0.1.3 → 0.1.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ca4be82e390515697d16daa359b5a036d5d7189
4
- data.tar.gz: 49744e964b4f0572f47371659ae0cba69b503237
3
+ metadata.gz: eb29f068e6f4690afe2f64cf6587fd838f184c06
4
+ data.tar.gz: 0190a4567118d2378326c2a8b3e63e867012d648
5
5
  SHA512:
6
- metadata.gz: 21fc605d450e4b1ec20d09e7014c29a7516b328efb814f442a187db99c0aaa1bff6b341cb14bcd8750351c8939c598d820adb93767008b27b26cecf25ccaf8e1
7
- data.tar.gz: a8416b6983a96add5385eb7cb806442ad6d5878e1f5e7cff48260c9abec3ab94db3cbe2d90d976b87444d5336a9e298156358424302442edd26a9aaf234c8ba5
6
+ metadata.gz: 77124ff40f7f18dd59ad0ea3f61877334ac56d58420ac1cb1d71b213987a0b7cb3ba2e77dabcb514a33d6f2df7b9ca3670303b6be879782a4f5dc1720ea5a8d3
7
+ data.tar.gz: f1e03c952fd4de4338a27990c6a33562398fec2d4a66d24fa05f8107429f2033bb9b6eb9ec34d2b73fd159cddba784e816a0e634d4e285ccdcdf2287c853070e
@@ -1,45 +1,45 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- curupira (0.1.3)
4
+ curupira (0.1.4)
5
5
  cocoon
6
6
  jquery-rails
7
- rails (~> 4.2.0)
7
+ rails (~> 4.2.3)
8
8
  sorcery
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionmailer (4.2.0)
14
- actionpack (= 4.2.0)
15
- actionview (= 4.2.0)
16
- activejob (= 4.2.0)
13
+ actionmailer (4.2.3)
14
+ actionpack (= 4.2.3)
15
+ actionview (= 4.2.3)
16
+ activejob (= 4.2.3)
17
17
  mail (~> 2.5, >= 2.5.4)
18
18
  rails-dom-testing (~> 1.0, >= 1.0.5)
19
- actionpack (4.2.0)
20
- actionview (= 4.2.0)
21
- activesupport (= 4.2.0)
22
- rack (~> 1.6.0)
19
+ actionpack (4.2.3)
20
+ actionview (= 4.2.3)
21
+ activesupport (= 4.2.3)
22
+ rack (~> 1.6)
23
23
  rack-test (~> 0.6.2)
24
24
  rails-dom-testing (~> 1.0, >= 1.0.5)
25
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
26
- actionview (4.2.0)
27
- activesupport (= 4.2.0)
25
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
26
+ actionview (4.2.3)
27
+ activesupport (= 4.2.3)
28
28
  builder (~> 3.1)
29
29
  erubis (~> 2.7.0)
30
30
  rails-dom-testing (~> 1.0, >= 1.0.5)
31
- rails-html-sanitizer (~> 1.0, >= 1.0.1)
32
- activejob (4.2.0)
33
- activesupport (= 4.2.0)
31
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
32
+ activejob (4.2.3)
33
+ activesupport (= 4.2.3)
34
34
  globalid (>= 0.3.0)
35
- activemodel (4.2.0)
36
- activesupport (= 4.2.0)
35
+ activemodel (4.2.3)
36
+ activesupport (= 4.2.3)
37
37
  builder (~> 3.1)
38
- activerecord (4.2.0)
39
- activemodel (= 4.2.0)
40
- activesupport (= 4.2.0)
38
+ activerecord (4.2.3)
39
+ activemodel (= 4.2.3)
40
+ activesupport (= 4.2.3)
41
41
  arel (~> 6.0)
42
- activesupport (4.2.0)
42
+ activesupport (4.2.3)
43
43
  i18n (~> 0.7)
44
44
  json (~> 1.7, >= 1.7.7)
45
45
  minitest (~> 5.1)
@@ -49,25 +49,23 @@ GEM
49
49
  activesupport (>= 3.0)
50
50
  railties (>= 3.0)
51
51
  rspec-rails (>= 2.2)
52
- arel (6.0.0)
53
- bcrypt (3.1.10)
52
+ arel (6.0.3)
53
+ bcrypt (3.1.11)
54
54
  builder (3.2.2)
55
- byebug (3.5.1)
56
- columnize (~> 0.8)
57
- debugger-linecache (~> 1.2)
58
- slop (~> 3.6)
55
+ byebug (4.0.5)
56
+ columnize (= 0.9.0)
59
57
  capybara (2.4.4)
60
58
  mime-types (>= 1.16)
61
59
  nokogiri (>= 1.3.3)
62
60
  rack (>= 1.0.0)
63
61
  rack-test (>= 0.5.4)
64
62
  xpath (~> 2.0)
65
- cocoon (1.2.6)
63
+ cocoon (1.2.9)
66
64
  codeclimate-test-reporter (0.4.7)
67
65
  simplecov (>= 0.7.1, < 1.0.0)
68
66
  coderay (1.1.0)
69
67
  columnize (0.9.0)
70
- debugger-linecache (1.2.0)
68
+ concurrent-ruby (1.0.2)
71
69
  diff-lcs (1.2.5)
72
70
  docile (1.1.5)
73
71
  erubis (2.7.0)
@@ -76,75 +74,74 @@ GEM
76
74
  factory_girl_rails (4.5.0)
77
75
  factory_girl (~> 4.5.0)
78
76
  railties (>= 3.0.0)
79
- faraday (0.9.1)
77
+ faraday (0.9.2)
80
78
  multipart-post (>= 1.2, < 3)
81
- globalid (0.3.3)
79
+ globalid (0.3.7)
82
80
  activesupport (>= 4.1.0)
83
- hike (1.2.3)
84
81
  i18n (0.7.0)
85
- jquery-rails (4.0.3)
86
- rails-dom-testing (~> 1.0)
82
+ jquery-rails (4.2.1)
83
+ rails-dom-testing (>= 1, < 3)
87
84
  railties (>= 4.2.0)
88
85
  thor (>= 0.14, < 2.0)
89
- json (1.8.2)
90
- jwt (1.4.1)
91
- loofah (2.0.1)
86
+ json (1.8.3)
87
+ jwt (1.5.4)
88
+ loofah (2.0.2)
92
89
  nokogiri (>= 1.5.9)
93
- mail (2.6.3)
94
- mime-types (>= 1.16, < 3)
90
+ mail (2.6.4)
91
+ mime-types (>= 1.16, < 4)
95
92
  method_source (0.8.2)
96
- mime-types (2.4.3)
93
+ mime-types (2.6.1)
97
94
  mini_portile (0.6.2)
98
- minitest (5.5.1)
99
- multi_json (1.10.1)
95
+ minitest (5.8.0)
96
+ multi_json (1.11.2)
100
97
  multi_xml (0.5.5)
101
98
  multipart-post (2.0.0)
102
99
  nokogiri (1.6.6.2)
103
100
  mini_portile (~> 0.6.0)
104
- oauth (0.4.7)
105
- oauth2 (1.0.0)
101
+ oauth (0.5.1)
102
+ oauth2 (1.2.0)
106
103
  faraday (>= 0.8, < 0.10)
107
104
  jwt (~> 1.0)
108
105
  multi_json (~> 1.3)
109
106
  multi_xml (~> 0.5)
110
- rack (~> 1.2)
107
+ rack (>= 1.2, < 3)
111
108
  pry (0.10.1)
112
109
  coderay (~> 1.1.0)
113
110
  method_source (~> 0.8.1)
114
111
  slop (~> 3.4)
115
- pry-rails (0.3.3)
112
+ pry-rails (0.3.4)
116
113
  pry (>= 0.9.10)
117
- rack (1.6.0)
114
+ rack (1.6.4)
118
115
  rack-test (0.6.3)
119
116
  rack (>= 1.0)
120
- rails (4.2.0)
121
- actionmailer (= 4.2.0)
122
- actionpack (= 4.2.0)
123
- actionview (= 4.2.0)
124
- activejob (= 4.2.0)
125
- activemodel (= 4.2.0)
126
- activerecord (= 4.2.0)
127
- activesupport (= 4.2.0)
117
+ rails (4.2.3)
118
+ actionmailer (= 4.2.3)
119
+ actionpack (= 4.2.3)
120
+ actionview (= 4.2.3)
121
+ activejob (= 4.2.3)
122
+ activemodel (= 4.2.3)
123
+ activerecord (= 4.2.3)
124
+ activesupport (= 4.2.3)
128
125
  bundler (>= 1.3.0, < 2.0)
129
- railties (= 4.2.0)
126
+ railties (= 4.2.3)
130
127
  sprockets-rails
131
128
  rails-deprecated_sanitizer (1.0.3)
132
129
  activesupport (>= 4.2.0.alpha)
133
- rails-dom-testing (1.0.5)
130
+ rails-dom-testing (1.0.6)
134
131
  activesupport (>= 4.2.0.beta, < 5.0)
135
132
  nokogiri (~> 1.6.0)
136
133
  rails-deprecated_sanitizer (>= 1.0.1)
137
- rails-html-sanitizer (1.0.1)
134
+ rails-html-sanitizer (1.0.2)
138
135
  loofah (~> 2.0)
139
- railties (4.2.0)
140
- actionpack (= 4.2.0)
141
- activesupport (= 4.2.0)
136
+ railties (4.2.3)
137
+ actionpack (= 4.2.3)
138
+ activesupport (= 4.2.3)
142
139
  rake (>= 0.8.7)
143
140
  thor (>= 0.18.1, < 2.0)
144
141
  rake (10.4.2)
145
- rspec-core (3.2.1)
142
+ rspec-core (3.2.3)
146
143
  rspec-support (~> 3.2.0)
147
- rspec-expectations (3.2.0)
144
+ rspec-expectations (3.2.1)
148
145
  diff-lcs (>= 1.2.0, < 2.0)
149
146
  rspec-support (~> 3.2.0)
150
147
  rspec-mocks (3.2.1)
@@ -165,23 +162,20 @@ GEM
165
162
  simplecov-html (~> 0.9.0)
166
163
  simplecov-html (0.9.0)
167
164
  slop (3.6.0)
168
- sorcery (0.9.0)
165
+ sorcery (0.9.1)
169
166
  bcrypt (~> 3.1)
170
167
  oauth (~> 0.4, >= 0.4.4)
171
168
  oauth2 (>= 0.8.0)
172
- sprockets (2.12.3)
173
- hike (~> 1.2)
174
- multi_json (~> 1.0)
175
- rack (~> 1.0)
176
- tilt (~> 1.1, != 1.3.0)
177
- sprockets-rails (2.2.4)
178
- actionpack (>= 3.0)
179
- activesupport (>= 3.0)
180
- sprockets (>= 2.8, < 4.0)
169
+ sprockets (3.7.0)
170
+ concurrent-ruby (~> 1.0)
171
+ rack (> 1, < 3)
172
+ sprockets-rails (3.2.0)
173
+ actionpack (>= 4.0)
174
+ activesupport (>= 4.0)
175
+ sprockets (>= 3.0.0)
181
176
  sqlite3 (1.3.10)
182
177
  thor (0.19.1)
183
- thread_safe (0.3.4)
184
- tilt (1.4.1)
178
+ thread_safe (0.3.5)
185
179
  tzinfo (1.2.2)
186
180
  thread_safe (~> 0.1)
187
181
  xpath (2.0.0)
@@ -200,3 +194,6 @@ DEPENDENCIES
200
194
  pry-rails
201
195
  rspec-rails
202
196
  sqlite3
197
+
198
+ BUNDLED WITH
199
+ 1.11.2
data/README.md CHANGED
@@ -21,6 +21,19 @@ And run:
21
21
  bundle install
22
22
  ```
23
23
 
24
+ ## Environment preparation
25
+ It's necessary to setup user and password on database.yml. Ex:
26
+ ```ruby
27
+ user: "postgres"
28
+ password: "postgres"
29
+ ```
30
+
31
+ After this, run:
32
+
33
+ ```console
34
+ rake db:create
35
+ ```
36
+
24
37
  ## Rails Configuration
25
38
 
26
39
  ```console
@@ -29,9 +42,60 @@ rails generate curupira:install
29
42
 
30
43
  The generator will install an initializer which describes ALL of Sorcery's configuration options, models and migrations for authentication and authorization solution.
31
44
 
45
+ So, run migrations:
46
+
47
+ ```console
48
+ rake db:migrate
49
+ ```
50
+
51
+ You have to add an admin user to application. Edit the seeds.rb file:
52
+
53
+ ```ruby
54
+ User.create(username: "user", name: "Default Admin User", email: "user@mail.com", password: "123456", admin: true)
55
+ ```
56
+
57
+ Then run:
58
+
59
+ ```console
60
+ rake db:seed
61
+ ```
62
+
63
+ Run the following task:
64
+
65
+ ```console
66
+ rake curupira:db:generate_features
67
+ ```
68
+
69
+ Replace your en.yml file by curupira/spec/dummy/config/locales/en.yml
70
+
71
+ ## Root path
72
+
73
+ If you dont't have root path configurations on your applications, follow these step:
74
+
75
+ Add this line to routes.rb file:
76
+
77
+ ```ruby
78
+ root to: "home#index"
79
+ ```
80
+
81
+ Create the home controller:
82
+
83
+ ```ruby
84
+ class HomeController < ApplicationController
85
+ def index
86
+ end
87
+ end
88
+ ```
89
+
90
+ Create the index home page:
91
+
92
+ ```ruby
93
+ app/views/home/index.html.erb
94
+ ```
95
+
32
96
  ## Controller filters and helpers
33
97
 
34
- Curupira will provide some helpers to use inside controllers and views. To setup controller with user authentication, just this add before_action:
98
+ Curupira will provide some helpers to use inside controllers and views. To setup controller with user authentication, just add this before_action:
35
99
 
36
100
  ```ruby
37
101
  before_action :require_login
@@ -53,7 +117,7 @@ Curupira will generate views to add users, roles, groups and features in databas
53
117
  rails generate curupira:views
54
118
  ```
55
119
 
56
- For dafault, the curupira views use coccon for nested forms.
120
+ For default, the curupira views use coccon for nested forms.
57
121
 
58
122
  ## Configuring controllers
59
123
 
@@ -65,7 +129,7 @@ rails generate curupira:controllers
65
129
 
66
130
  ## Partials
67
131
 
68
- You should add in application.html.erb partials for menu, and helper for dispaly flash messages:
132
+ You should add in application.html.erb partials for menu, and helper for display flash messages:
69
133
 
70
134
  ```ruby
71
135
  <%- flash.each do |name, msg| -%>
@@ -78,9 +142,15 @@ You should add in application.html.erb partials for menu, and helper for dispaly
78
142
  ```
79
143
 
80
144
  * Add to your application.js
145
+ ```ruby
81
146
  //= require jquery
82
147
  //= require cocoon
148
+ ```
149
+
150
+ ## Using curupira
151
+
152
+ Open http://localhost:3000/session/new and inform the same user configured on seed file.
83
153
 
84
154
  ## License
85
155
 
86
- Curupira is released under the [MIT License](http://www.opensource.org/licenses/MIT).
156
+ Curupira is released under the [MIT License](http://www.opensource.org/licenses/MIT).
@@ -6,7 +6,7 @@ class Curupira::PasswordsController < ApplicationController
6
6
  end
7
7
 
8
8
  def create
9
- @user = User.find_by(params[:user])
9
+ @user = User.find_by(email: params[:user][:email])
10
10
  if @user.present?
11
11
  @user.deliver_reset_password_instructions!
12
12
  redirect_to new_session_path, notice: "Verifique seu email para receber instruções de recuperação de senha"
@@ -0,0 +1,19 @@
1
+ class Curupira::PermissionsController < Curupira::AuthorizedController
2
+ def create
3
+ @group_user = GroupUser.find(params[:group_user_id])
4
+
5
+ if @group_user.update(permissions_params)
6
+ redirect_to users_path, notice: "Permissões atualizadas com sucesso"
7
+ else
8
+ render :show
9
+ end
10
+ end
11
+
12
+ private
13
+
14
+ def permissions_params
15
+ params.require(:group_user).permit(
16
+ role_group_users_attributes:[:id, :role_id, :group_user_id]
17
+ )
18
+ end
19
+ end
@@ -1,4 +1,4 @@
1
- class Curupira::SessionsController < ApplicationController
1
+ class Curupira::SessionsController < ActionController::Base
2
2
  before_filter :redirect_to_root_with_errors, if: :current_user, except: :destroy
3
3
 
4
4
  def new
@@ -9,7 +9,7 @@ class Curupira::SessionsController < ApplicationController
9
9
  @user = login(params[:user][:username], params[:user][:password])
10
10
 
11
11
  if @user
12
- redirect_back_or_to(root_path, notice: 'Bem vindo!')
12
+ redirect_to(root_path, notice: 'Bem vindo!')
13
13
  else
14
14
  @user = User.new username: params[:user][:username]
15
15
  flash[:alert] = "Login ou senha inválidos"
@@ -41,7 +41,7 @@ class Curupira::UsersController < Curupira::AuthorizedController
41
41
 
42
42
  def permission
43
43
  @user = User.find(params[:user_id])
44
- @group_user = @user.group_users.find_by(group_id: params[:group_id])
44
+ @group_user = @user.group_users.find(params[:group_user_id])
45
45
  @group = @group_user.group
46
46
  end
47
47
 
@@ -4,16 +4,17 @@ module Curupira::AuthorizeHelper
4
4
  options ||= {}
5
5
 
6
6
  html_options = convert_options_to_data_attributes(options, html_options)
7
-
7
+
8
8
  url = url_for(options)
9
+ method = html_options["data-method"].to_s.upcase if html_options["data-method"]
9
10
 
10
- request_data = Rails.application.routes.recognize_path(url)
11
+ request_data = Rails.application.routes.recognize_path(url, method: method)
11
12
 
12
13
  if has_authorization_for(request_data)
13
14
  html_options['href'] ||= url
14
15
  else
15
16
  html_options['style'] = "cursor: not-allowed;"
16
- html_options['class'] = "not-allowed";
17
+ html_options['class'] = "#{html_options['class']} not-allowed";
17
18
  end
18
19
 
19
20
  content_tag(:a, name || url, html_options, &block)
@@ -22,16 +22,18 @@
22
22
  <div id="user_groups">
23
23
  <h3>Usuários vinculados</h3>
24
24
 
25
- <ul>
26
- <% @role.group_users.group(:group_id).each do |gu| %>
27
- <h4>Grupo <%= link_to gu.group.name, gu.group %></h4>
28
- <% @role.group_users.where(group_id:gu.group_id).each do |group_user|%>
29
- <ul>
30
- <li><%= link_to group_user.user.name, group_user.user %></li>
31
- </ul>
25
+ <% if @role.group_users.present? %>
26
+ <ul>
27
+ <% @role.group_users.group(:group_id).each do |gu| %>
28
+ <h4>Grupo <%= link_to gu.group.name, gu.group %></h4>
29
+ <% @role.group_users.where(group_id:gu.group_id).each do |group_user|%>
30
+ <ul>
31
+ <li><%= link_to group_user.user.name, group_user.user %></li>
32
+ </ul>
33
+ <% end %>
32
34
  <% end %>
33
- <% end %>
34
- </ul>
35
+ </ul>
36
+ <% end %>
35
37
  </div>
36
38
 
37
39
  <%= link_to "Voltar", roles_path %>
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
 
7
7
  <div class="field">
8
- <%= f.label :name, "Nome" %><br>
8
+ <%= f.label :name, "Nome completo" %><br>
9
9
  <%= f.text_field :name %>
10
10
  </div>
11
11
 
@@ -1,10 +1,9 @@
1
1
  <div class="nested-fields">
2
2
  <% if f.object.role.blank? || f.object.role.active? %>
3
-
4
3
  <%= f.select :role_id, active_role_groups_select_options(@group) %>
5
4
  <% else %>
6
5
  <%= f.object.role.name %>
7
6
  <% end %>
8
-
7
+ <%= f.hidden_field :group_user_id, value: @group_user.id %>
9
8
  <%= link_to_remove_association "Remover", f %>
10
9
  </div>
@@ -4,17 +4,22 @@ Usuário <%= @user.name %>
4
4
 
5
5
  Grupo <%= @group.name %>
6
6
 
7
- <%= form_for @user do |f| %>
7
+ <%= form_for @group_user, url: permissions_path(@group_user) do |f| %>
8
8
  <div class="group_users">
9
9
  <h3>Perfil</h3>
10
10
 
11
- <%= f.fields_for :role_group_users do |b| %>
12
- <%= render "role_group_user_fields", f: b %>
13
- <% end %>
11
+ <%= f.fields_for :role_group_users do |b| %>
12
+ <%= render "role_group_user_fields", f: b %>
13
+ <% end %>
14
14
 
15
15
  <div class="links">
16
16
  <%= link_to_add_association 'Adicionar perfil', f, :role_group_users %>
17
17
  </div>
18
18
  </div>
19
+
20
+ <div class="actions">
21
+ <%= f.submit %><br>
22
+ or <%= link_to :cancel, users_path %>
23
+ </div>
19
24
  <% end %>
20
25
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  <ul>
18
18
  <% @user.group_users.each do |group_user| %>
19
- <li><%= group_user.group.name %> <%= link_to "Vincular perfis do grupo", user_permission_path(@user,group_user.group) %>
19
+ <li><%= group_user.group.name %> <%= link_to "Vincular perfis do grupo", user_permission_path(@user, group_user) %>
20
20
  <% group_user.role_group_users.each do |role_group_user|%>
21
21
  <p><%= role_group_user.role.name %></p>
22
22
  <% end %>
@@ -25,4 +25,14 @@
25
25
  </ul>
26
26
  </div>
27
27
 
28
+ <div>
29
+ <h3>Perfis</h3>
30
+
31
+ <ul>
32
+ <% @user.role_group_users.each do |permission| %>
33
+ <li><%= permission.role.name %></li>
34
+ <% end -%>
35
+ </ul>
36
+ </div>
37
+
28
38
  <%= link_to "Voltar", users_path %>
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.test_files = Dir["spec/**/*"]
18
18
  s.require_paths = ["lib"]
19
19
 
20
- s.add_dependency "rails", "~> 4.2.0"
20
+ s.add_dependency "rails", "~> 4.2.3"
21
21
  s.add_dependency "sorcery"
22
22
  s.add_dependency "cocoon"
23
23
  s.add_dependency "jquery-rails"
@@ -15,11 +15,11 @@ module Curupira
15
15
  end
16
16
 
17
17
  def has_authorization?
18
- return true if current_user.admin?
19
- query(params).present?
18
+ has_authorization_for(params)
20
19
  end
21
20
 
22
21
  def has_authorization_for(params)
22
+ return true if current_user.admin?
23
23
  query(params).present?
24
24
  end
25
25
 
@@ -31,7 +31,7 @@ module Curupira
31
31
 
32
32
  def query(params)
33
33
  User.joins(
34
- role_group_users: { role: { features: [:action_labels] } }
34
+ role_group_users: { role: { features: [:action_labels] } }
35
35
  )
36
36
  .where(
37
37
  features: { controller: params[:controller] },
@@ -3,9 +3,11 @@ module ActionDispatch::Routing
3
3
  def curupira_routes
4
4
  scope module: 'curupira' do
5
5
  resources :users, except: :destroy do
6
- get 'groups/:group_id/roles', to: 'users#permission',as: 'permission', action: :permission, controller: :users
6
+ get 'groups/:group_user_id/roles', to: 'users#permission',as: 'permission', action: :permission, controller: :users
7
7
  end
8
8
 
9
+ patch 'permissions/:group_user_id', to: 'permissions#create', as: 'permissions'
10
+
9
11
  resources :groups, except: :destroy
10
12
  resources :roles, except: :destroy
11
13
  resource :session, only: [:new, :create] do
@@ -1,3 +1,3 @@
1
1
  module Curupira
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -17,26 +17,11 @@ module Curupira
17
17
  copy_file 'sorcery.rb', 'config/initializers/sorcery.rb'
18
18
  end
19
19
 
20
- def create_role_group_user
21
- create_model "role_group_user"
22
- create_migration_to("role_group_user")
23
- end
24
-
25
- def create_authorization
26
- create_model "authorization"
27
- create_migration_to("authorization")
28
- end
29
-
30
20
  def create_feature
31
21
  create_model "feature"
32
22
  create_migration_to("feature")
33
23
  end
34
24
 
35
- def create_groups
36
- create_model "group"
37
- create_migration_to("group")
38
- end
39
-
40
25
  def create_role
41
26
  create_model "role"
42
27
  create_migration_to("role")
@@ -54,11 +39,26 @@ module Curupira
54
39
  end
55
40
  end
56
41
 
42
+ def create_groups
43
+ create_model "group"
44
+ create_migration_to("group")
45
+ end
46
+
57
47
  def create_group_user
58
48
  create_model "group_user"
59
49
  create_migration_to("group_user")
60
50
  end
61
51
 
52
+ def create_authorization
53
+ create_model "authorization"
54
+ create_migration_to("authorization")
55
+ end
56
+
57
+ def create_role_group_user
58
+ create_model "role_group_user"
59
+ create_migration_to("role_group_user")
60
+ end
61
+
62
62
  def create_role_group
63
63
  create_model "role_group"
64
64
  create_migration_to("role_group")
@@ -6,7 +6,7 @@ class CreateRoleGroupUsers < ActiveRecord::Migration
6
6
 
7
7
  t.timestamps null: false
8
8
  end
9
- add_foreign_key :authorizations, :group_users
10
- add_foreign_key :authorizations, :roles
9
+ add_foreign_key :role_group_users, :group_users
10
+ add_foreign_key :role_group_users, :roles
11
11
  end
12
12
  end
@@ -0,0 +1,43 @@
1
+ namespace :curupira do
2
+ namespace :db do
3
+ desc "Generate the records of the features"
4
+ task :generate_features => :environment do
5
+ Rails.application.eager_load!
6
+
7
+ def eval_curupira_action(controller, action)
8
+ feature_desc = case action.to_s
9
+ when "index", "show", "search"
10
+ I18n.t("curupira.features.#{controller}.show")
11
+ when "create", "new"
12
+ I18n.t("curupira.features.#{controller}.create")
13
+ when "edit", "update"
14
+ I18n.t("curupira.features.#{controller}.edit")
15
+ when "delete", "destroy"
16
+ I18n.t("curupira.features.#{controller}.delete")
17
+ else
18
+ "Other: " << action.to_s
19
+ end
20
+ end
21
+
22
+ Curupira::AuthorizedController.subclasses.each do |controller|
23
+ clazz = controller.to_s.underscore.gsub("_controller", "")
24
+
25
+ feature = Feature.create name: I18n.t("curupira.features.#{clazz}.manage"), controller: clazz
26
+ feature.action_labels << ActionLabel.create(name: "manage")
27
+
28
+ controller.action_methods.each do |action|
29
+ feature_description = eval_curupira_action(clazz, action)
30
+
31
+ feature = Feature.find_by(name: feature_description)
32
+
33
+ if feature.present?
34
+ feature.action_labels << ActionLabel.create(name: action)
35
+ else
36
+ feature = Feature.create name: feature_description, controller: clazz
37
+ feature.action_labels << ActionLabel.create(name: action)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,43 @@
1
+ require 'rails_helper'
2
+
3
+ describe Curupira::PermissionsController do
4
+ let(:user) { FactoryGirl.create :user }
5
+
6
+ before do
7
+ login_user(user)
8
+ end
9
+
10
+ describe "POST create" do
11
+ let(:group) { FactoryGirl.create :group }
12
+ let!(:group_user) { FactoryGirl.create :group_user, user: user, group: group }
13
+ let!(:role) { FactoryGirl.create :role }
14
+
15
+ let(:params) do
16
+ {
17
+ role_group_users_attributes: {
18
+ "0": {
19
+ role_id: role.id,
20
+ group_user_id: group_user.id,
21
+ _destroy: true
22
+ }
23
+ }
24
+ }
25
+ end
26
+
27
+ before do
28
+ patch :create, user_id: user, group_user_id: group_user, group_user: params
29
+ end
30
+
31
+ it "sets flash message" do
32
+ expect(flash[:notice]).to eql "Permissões atualizadas com sucesso"
33
+ end
34
+
35
+ it "redirects to user" do
36
+ expect(response).to redirect_to users_path
37
+ end
38
+
39
+ it "updates user permissions" do
40
+ expect(user.role_group_users).to_not be_empty
41
+ end
42
+ end
43
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: curupira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Moura
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-03-23 00:00:00.000000000 Z
14
+ date: 2016-09-30 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 4.2.0
22
+ version: 4.2.3
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 4.2.0
29
+ version: 4.2.3
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: sorcery
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -131,6 +131,7 @@ files:
131
131
  - app/controllers/curupira/authorized_controller.rb
132
132
  - app/controllers/curupira/groups_controller.rb
133
133
  - app/controllers/curupira/passwords_controller.rb
134
+ - app/controllers/curupira/permissions_controller.rb
134
135
  - app/controllers/curupira/roles_controller.rb
135
136
  - app/controllers/curupira/sessions_controller.rb
136
137
  - app/controllers/curupira/users_controller.rb
@@ -198,7 +199,7 @@ files:
198
199
  - lib/generators/curupira/templates/models/user.rb
199
200
  - lib/generators/curupira/templates/sorcery.rb
200
201
  - lib/generators/curupira/views/views_generator.rb
201
- - lib/tasks/curupira_tasks.rake
202
+ - lib/tasks/generate_features.rake
202
203
  - spec/app_templates/app/models/action_label.rb
203
204
  - spec/app_templates/app/models/authorization.rb
204
205
  - spec/app_templates/app/models/feature.rb
@@ -214,6 +215,7 @@ files:
214
215
  - spec/controllers/controller_spec.rb
215
216
  - spec/controllers/groups_controller_spec.rb
216
217
  - spec/controllers/passwords_controller_spec.rb
218
+ - spec/controllers/permissions_controller_spec.rb
217
219
  - spec/controllers/roles_controller_spec.rb
218
220
  - spec/controllers/sessions_controller_spec.rb
219
221
  - spec/controllers/users_controller_spec.rb
@@ -307,6 +309,33 @@ files:
307
309
  - spec/dummy/tmp/cache/assets/development/sprockets/f08dd8750f1b67d0b39d0453340debd1
308
310
  - spec/dummy/tmp/cache/assets/development/sprockets/f4c8cc7ee30d971cd1dfe35590150076
309
311
  - spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
312
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/11/11qUINZVkspPusRjYi0EsPGHgPx1ucKYEW7OZa-ROf8.cache
313
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/3V/3VpANc-zUJ4o7xwd6zey29ROk_3UHDhxxKGTqfvurns.cache
314
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/43/43vpVqY0hqfeLEu7IJrvfDfxli39gGvbKgz3CR4r7W0.cache
315
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
316
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/6J/6JN1_8GdgZtvpBXXuiWuMY7xt6IjydJ3lJSZsjxCW9Q.cache
317
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/6l/6lnXZ4Zo5E5OEd0CTZ3N7e4sPYkJb2eE3fNcALJZELI.cache
318
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/C_/C_FnpuuPmQ9tbuExCy9OboIU-vODSbW_ziARCnV-fVs.cache
319
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Dc/DcvIrhAdXfgYuyAVsBv-gJHocSghSL13sAlclmZDTPk.cache
320
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/GJ/GJviH6KdNN1xr8mBlY11cqDqKlYMWIx6e8SqSJ0rnf4.cache
321
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/No/NoS_8-C65A3rQoHefOJ8Tz2I4_MN8TQRiL98uDIS3ac.cache
322
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
323
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8KxPEymBRfVloJ9-DKnbW3cd5PupDTZ4vu-4jK-APY.cache
324
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Rh/RhU8_A_NiK15IOcNzSB6T59G09jvVjGGeCXR8TKllsU.cache
325
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Si/SijZ6H6BzYCYwbV7RUkDMAMKMnfDgQSAzYwaoBmyN7o.cache
326
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Tv/TvweWkVPBg72gjx-rF5ymMK0BlumrTZ-sugiqadBZTQ.cache
327
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dS/dSAcGS8d1BPh2juLRlDFyHhfvU-4TU6O18LWg1BuPaA.cache
328
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eC/eCBvHFs-512gcf7T14QeNltyQjgeC0-6OGrC1VMtDtk.cache
329
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eC/ecBO7Z0u69gqyfUsiZIVf-bEzR0xRpTLLyxjQXM_Zl0.cache
330
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/kF/kFoDlRfNOKV8rQGFtfNEn_8w7B2Fxxp6eF5PcKhR1xw.cache
331
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/mx/mxfh1wDtEIflp3_BhHl2qkTSeZwh5Vq6C1TSezMgWXk.cache
332
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/rY/rYWDUI_QM0zko_l6B60oMvOqLZ7r7b4fAPGXdA8-wHA.cache
333
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/rf/rf8yQEgTIUfY45f5KSvmOXr42QFfF1rIk0K-KaD0BsU.cache
334
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/t7/t7gT6u72b6dwyoLeg0f50UW52KJ70Cf_NQOaSZeQr2c.cache
335
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/tp/tpMy-AhYzGQc6PtaziCcSwZgGdCJ7FlpNC9JGtCCbqU.cache
336
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/vj/vj90cXjZ7OoCyT_aukcUFdgvA548yutCgr_UmYL4fmY.cache
337
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xC/xCtgNNpIR8fd0Lapcl6ZJn07yGA9G0AoiO2qf-CrRf8.cache
338
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/yQ/yQswlYk44cbTKwozBGSLLK0FHDQZZ9RYKpYO4TYG0Lo.cache
310
339
  - spec/dummy/tmp/cache/assets/test/sprockets/0c983616312a5fe6b5b66a208a100a26
311
340
  - spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
312
341
  - spec/dummy/tmp/cache/assets/test/sprockets/1a802b68d6ceb6709753c85c0cce26f9
@@ -321,6 +350,51 @@ files:
321
350
  - spec/dummy/tmp/cache/assets/test/sprockets/da26f8d0b212d2421b0762dddbe54fe0
322
351
  - spec/dummy/tmp/cache/assets/test/sprockets/f4c8cc7ee30d971cd1dfe35590150076
323
352
  - spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
353
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/-Ape6aFiaJnfRzBFB6I1zug3-zUvknte1pQkhxXPpNg.cache
354
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/077Fbzuoh-E-rpzc5jB37x6Xr-n_rpiqcmZQdFD27pM.cache
355
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/10KNHaXGM6cnSryFJaOFczUpsLH0hFAjai507S8oH0w.cache
356
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/2L1JdmPVWPI-Az1labUU562gbVg--NGiArU5-86yLEQ.cache
357
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/3VpANc-zUJ4o7xwd6zey29ROk_3UHDhxxKGTqfvurns.cache
358
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/3xHdTymIczufAwXWeD5LK17RVgOn0kb8w62TD5dzJgs.cache
359
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
360
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/62nVKVQ4YqTKpZTemqK3GdQMBmQGwCbRPNMDsHPZi1c.cache
361
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/6aUjL8cKWqp-X8tueq0ot6qMbP2u63cZV_L_JMc02Fg.cache
362
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/6lnXZ4Zo5E5OEd0CTZ3N7e4sPYkJb2eE3fNcALJZELI.cache
363
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/DcvIrhAdXfgYuyAVsBv-gJHocSghSL13sAlclmZDTPk.cache
364
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/FXNsifiWDvkk8ng-18WuhQnIz9t_IZl_9HJKOakstBo.cache
365
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/FmcJJJY9WCKuOFj-LOt-E68psiTy3YUYgPf7K_sybHs.cache
366
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/JncY3pMTMZkvr5yyc0XZCvchmrzvRgtHAmYZgmkvK-4.cache
367
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/K6ugJQ_c97Yhsps2QESN0Wf8R4s0iZyoHM30zcZ4WX0.cache
368
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/LWxjOFBIglLYLShGg7ykFNfWCbzX3V37yht6G60EEv4.cache
369
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/MA_6eqUl7I4cRpT4sdbWMz9uodflrQFwUHcv_IL_vA0.cache
370
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
371
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/QVuN44siAlvIB-ksVqPX1CnJCgjJWlB-3ceyrUsqWGc.cache
372
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/RHWWOO-XznAww7nsYwQgtVLgv-fdZhTLYZbQCl0bfbU.cache
373
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/TNybb-vepiqZe7qd_PZ1AVop8mis7FEyYUab9olKxgk.cache
374
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/d6iF3VREbfQnoaDyM--smaNWw9UcZCR--rQo_EB6LWo.cache
375
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/dC91FCTVA1M5TMy3n1apuF2RqouhoEZj5BJPp-WNAFc.cache
376
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/e76RtuOlhp9HDwzjhT61Pf0RH-1NbZ4-4oe98V5QZFg.cache
377
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/eCBvHFs-512gcf7T14QeNltyQjgeC0-6OGrC1VMtDtk.cache
378
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/eMF4rFUN28D_zO3JgUB1uiD-mSWEBMM96KiXF8bHApM.cache
379
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/gQVWokADN6RhnhfT7_1XqQ8C8eFyIzSLQVJWXNxURK4.cache
380
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/hO-SK4Bc37Mh-85lSOsjHc0Bcb6yfABH9VZeyb5shG8.cache
381
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/k1t_sYFw252PeH-qB5uhj1wZRpbg22yVJCbAoXDbsqA.cache
382
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kDS8MqPGDT8NcP18XxNX1Z_pu2ailuRWgyos5P673GQ.cache
383
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kMlIbqAoqA-1iUf06YxtiGIt9J8n3D2SZDueR2vs1wY.cache
384
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kuT_Vv3uXVNCkvep27iTk6qu5jOuT71W2zbJtGsvSjc.cache
385
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/mHfhzehSyMA3PM-T61bBntiakCcO6YyCFQSpMau9Nbs.cache
386
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/oTDmIqgUtHor42nDB-LFAQqCfetrOJNB8nLqTyp2jLo.cache
387
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/p7fvByhbhzavXggwUXri4UydX38RF37re6dl_o5-CD8.cache
388
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qJsZ01axPSNj9qMx-mJ5Y1ETJe0hZi7LNTn2R10KJNQ.cache
389
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rYWDUI_QM0zko_l6B60oMvOqLZ7r7b4fAPGXdA8-wHA.cache
390
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rmj1RWw9Swge9e9WWxJJ3J7w3Otcx9FCXc_d4ZQ4uyE.cache
391
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/twhZBO0UlNDyG0tN0-4m0mh0oIKM2WIwJVdJhBkNmEY.cache
392
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/xCtgNNpIR8fd0Lapcl6ZJn07yGA9G0AoiO2qf-CrRf8.cache
393
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/xkdwrxy6TmnTk-JYNRQU995VtO5IiAe8nTscS9uBWfI.cache
394
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/y--KTSOBOYC4T3CfzpJbExDGVWRmhvR-B8E1rMPSbtI.cache
395
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/yQswlYk44cbTKwozBGSLLK0FHDQZZ9RYKpYO4TYG0Lo.cache
396
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/z1tcJJHpo7HO8epwbTzeLoApbuzFuip81H_J2BFEULQ.cache
397
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/zFNySDTiarqcpPtEvX26xVDa5IrCmhl3VG3gHIVitC4.cache
324
398
  - spec/features/link_authorize_spec.rb
325
399
  - spec/features/list_users_spec.rb
326
400
  - spec/features/log_in_spec.rb
@@ -351,15 +425,15 @@ files:
351
425
  - spec/tmp/app/models/user.rb
352
426
  - spec/tmp/config/initializers/sorcery.rb
353
427
  - spec/tmp/config/routes.rb
354
- - spec/tmp/db/migrate/20150323194119_create_role_group_users.rb
355
- - spec/tmp/db/migrate/20150323194120_create_authorizations.rb
356
- - spec/tmp/db/migrate/20150323194121_create_features.rb
357
- - spec/tmp/db/migrate/20150323194122_create_groups.rb
358
- - spec/tmp/db/migrate/20150323194123_create_roles.rb
359
- - spec/tmp/db/migrate/20150323194124_sorcery_core.rb
360
- - spec/tmp/db/migrate/20150323194125_create_group_users.rb
361
- - spec/tmp/db/migrate/20150323194126_create_role_groups.rb
362
- - spec/tmp/db/migrate/20150323194127_create_action_labels.rb
428
+ - spec/tmp/db/migrate/20160930024816_create_features.rb
429
+ - spec/tmp/db/migrate/20160930024817_create_roles.rb
430
+ - spec/tmp/db/migrate/20160930024818_sorcery_core.rb
431
+ - spec/tmp/db/migrate/20160930024819_create_groups.rb
432
+ - spec/tmp/db/migrate/20160930024820_create_group_users.rb
433
+ - spec/tmp/db/migrate/20160930024821_create_authorizations.rb
434
+ - spec/tmp/db/migrate/20160930024822_create_role_group_users.rb
435
+ - spec/tmp/db/migrate/20160930024823_create_role_groups.rb
436
+ - spec/tmp/db/migrate/20160930024824_create_action_labels.rb
363
437
  homepage: https://rubygems.org/gems/curupira
364
438
  licenses:
365
439
  - MIT
@@ -380,7 +454,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
380
454
  version: '0'
381
455
  requirements: []
382
456
  rubyforge_project:
383
- rubygems_version: 2.4.6
457
+ rubygems_version: 2.4.5.1
384
458
  signing_key:
385
459
  specification_version: 4
386
460
  summary: Curupira!
@@ -400,6 +474,7 @@ test_files:
400
474
  - spec/controllers/controller_spec.rb
401
475
  - spec/controllers/groups_controller_spec.rb
402
476
  - spec/controllers/passwords_controller_spec.rb
477
+ - spec/controllers/permissions_controller_spec.rb
403
478
  - spec/controllers/roles_controller_spec.rb
404
479
  - spec/controllers/sessions_controller_spec.rb
405
480
  - spec/controllers/users_controller_spec.rb
@@ -487,6 +562,33 @@ test_files:
487
562
  - spec/dummy/tmp/cache/assets/development/sprockets/f08dd8750f1b67d0b39d0453340debd1
488
563
  - spec/dummy/tmp/cache/assets/development/sprockets/f4c8cc7ee30d971cd1dfe35590150076
489
564
  - spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655
565
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/11/11qUINZVkspPusRjYi0EsPGHgPx1ucKYEW7OZa-ROf8.cache
566
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/3V/3VpANc-zUJ4o7xwd6zey29ROk_3UHDhxxKGTqfvurns.cache
567
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/43/43vpVqY0hqfeLEu7IJrvfDfxli39gGvbKgz3CR4r7W0.cache
568
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/5L/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
569
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/6J/6JN1_8GdgZtvpBXXuiWuMY7xt6IjydJ3lJSZsjxCW9Q.cache
570
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/6l/6lnXZ4Zo5E5OEd0CTZ3N7e4sPYkJb2eE3fNcALJZELI.cache
571
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/C_/C_FnpuuPmQ9tbuExCy9OboIU-vODSbW_ziARCnV-fVs.cache
572
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Dc/DcvIrhAdXfgYuyAVsBv-gJHocSghSL13sAlclmZDTPk.cache
573
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/dS/dSAcGS8d1BPh2juLRlDFyHhfvU-4TU6O18LWg1BuPaA.cache
574
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eC/ecBO7Z0u69gqyfUsiZIVf-bEzR0xRpTLLyxjQXM_Zl0.cache
575
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/eC/eCBvHFs-512gcf7T14QeNltyQjgeC0-6OGrC1VMtDtk.cache
576
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/GJ/GJviH6KdNN1xr8mBlY11cqDqKlYMWIx6e8SqSJ0rnf4.cache
577
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/kF/kFoDlRfNOKV8rQGFtfNEn_8w7B2Fxxp6eF5PcKhR1xw.cache
578
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/mx/mxfh1wDtEIflp3_BhHl2qkTSeZwh5Vq6C1TSezMgWXk.cache
579
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/No/NoS_8-C65A3rQoHefOJ8Tz2I4_MN8TQRiL98uDIS3ac.cache
580
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/OI/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
581
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/P8/P8KxPEymBRfVloJ9-DKnbW3cd5PupDTZ4vu-4jK-APY.cache
582
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/rf/rf8yQEgTIUfY45f5KSvmOXr42QFfF1rIk0K-KaD0BsU.cache
583
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Rh/RhU8_A_NiK15IOcNzSB6T59G09jvVjGGeCXR8TKllsU.cache
584
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/rY/rYWDUI_QM0zko_l6B60oMvOqLZ7r7b4fAPGXdA8-wHA.cache
585
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Si/SijZ6H6BzYCYwbV7RUkDMAMKMnfDgQSAzYwaoBmyN7o.cache
586
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/t7/t7gT6u72b6dwyoLeg0f50UW52KJ70Cf_NQOaSZeQr2c.cache
587
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/tp/tpMy-AhYzGQc6PtaziCcSwZgGdCJ7FlpNC9JGtCCbqU.cache
588
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/Tv/TvweWkVPBg72gjx-rF5ymMK0BlumrTZ-sugiqadBZTQ.cache
589
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/vj/vj90cXjZ7OoCyT_aukcUFdgvA548yutCgr_UmYL4fmY.cache
590
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/xC/xCtgNNpIR8fd0Lapcl6ZJn07yGA9G0AoiO2qf-CrRf8.cache
591
+ - spec/dummy/tmp/cache/assets/sprockets/v3.0/yQ/yQswlYk44cbTKwozBGSLLK0FHDQZZ9RYKpYO4TYG0Lo.cache
490
592
  - spec/dummy/tmp/cache/assets/test/sprockets/0c983616312a5fe6b5b66a208a100a26
491
593
  - spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705
492
594
  - spec/dummy/tmp/cache/assets/test/sprockets/1a802b68d6ceb6709753c85c0cce26f9
@@ -501,6 +603,51 @@ test_files:
501
603
  - spec/dummy/tmp/cache/assets/test/sprockets/da26f8d0b212d2421b0762dddbe54fe0
502
604
  - spec/dummy/tmp/cache/assets/test/sprockets/f4c8cc7ee30d971cd1dfe35590150076
503
605
  - spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655
606
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/-Ape6aFiaJnfRzBFB6I1zug3-zUvknte1pQkhxXPpNg.cache
607
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/077Fbzuoh-E-rpzc5jB37x6Xr-n_rpiqcmZQdFD27pM.cache
608
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/10KNHaXGM6cnSryFJaOFczUpsLH0hFAjai507S8oH0w.cache
609
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/2L1JdmPVWPI-Az1labUU562gbVg--NGiArU5-86yLEQ.cache
610
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/3VpANc-zUJ4o7xwd6zey29ROk_3UHDhxxKGTqfvurns.cache
611
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/3xHdTymIczufAwXWeD5LK17RVgOn0kb8w62TD5dzJgs.cache
612
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache
613
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/62nVKVQ4YqTKpZTemqK3GdQMBmQGwCbRPNMDsHPZi1c.cache
614
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/6aUjL8cKWqp-X8tueq0ot6qMbP2u63cZV_L_JMc02Fg.cache
615
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/6lnXZ4Zo5E5OEd0CTZ3N7e4sPYkJb2eE3fNcALJZELI.cache
616
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/d6iF3VREbfQnoaDyM--smaNWw9UcZCR--rQo_EB6LWo.cache
617
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/dC91FCTVA1M5TMy3n1apuF2RqouhoEZj5BJPp-WNAFc.cache
618
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/DcvIrhAdXfgYuyAVsBv-gJHocSghSL13sAlclmZDTPk.cache
619
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/e76RtuOlhp9HDwzjhT61Pf0RH-1NbZ4-4oe98V5QZFg.cache
620
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/eCBvHFs-512gcf7T14QeNltyQjgeC0-6OGrC1VMtDtk.cache
621
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/eMF4rFUN28D_zO3JgUB1uiD-mSWEBMM96KiXF8bHApM.cache
622
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/FmcJJJY9WCKuOFj-LOt-E68psiTy3YUYgPf7K_sybHs.cache
623
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/FXNsifiWDvkk8ng-18WuhQnIz9t_IZl_9HJKOakstBo.cache
624
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/gQVWokADN6RhnhfT7_1XqQ8C8eFyIzSLQVJWXNxURK4.cache
625
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/hO-SK4Bc37Mh-85lSOsjHc0Bcb6yfABH9VZeyb5shG8.cache
626
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/JncY3pMTMZkvr5yyc0XZCvchmrzvRgtHAmYZgmkvK-4.cache
627
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/k1t_sYFw252PeH-qB5uhj1wZRpbg22yVJCbAoXDbsqA.cache
628
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/K6ugJQ_c97Yhsps2QESN0Wf8R4s0iZyoHM30zcZ4WX0.cache
629
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kDS8MqPGDT8NcP18XxNX1Z_pu2ailuRWgyos5P673GQ.cache
630
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kMlIbqAoqA-1iUf06YxtiGIt9J8n3D2SZDueR2vs1wY.cache
631
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/kuT_Vv3uXVNCkvep27iTk6qu5jOuT71W2zbJtGsvSjc.cache
632
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/LWxjOFBIglLYLShGg7ykFNfWCbzX3V37yht6G60EEv4.cache
633
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/MA_6eqUl7I4cRpT4sdbWMz9uodflrQFwUHcv_IL_vA0.cache
634
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/mHfhzehSyMA3PM-T61bBntiakCcO6YyCFQSpMau9Nbs.cache
635
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache
636
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/oTDmIqgUtHor42nDB-LFAQqCfetrOJNB8nLqTyp2jLo.cache
637
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/p7fvByhbhzavXggwUXri4UydX38RF37re6dl_o5-CD8.cache
638
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/qJsZ01axPSNj9qMx-mJ5Y1ETJe0hZi7LNTn2R10KJNQ.cache
639
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/QVuN44siAlvIB-ksVqPX1CnJCgjJWlB-3ceyrUsqWGc.cache
640
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/RHWWOO-XznAww7nsYwQgtVLgv-fdZhTLYZbQCl0bfbU.cache
641
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rmj1RWw9Swge9e9WWxJJ3J7w3Otcx9FCXc_d4ZQ4uyE.cache
642
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/rYWDUI_QM0zko_l6B60oMvOqLZ7r7b4fAPGXdA8-wHA.cache
643
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/TNybb-vepiqZe7qd_PZ1AVop8mis7FEyYUab9olKxgk.cache
644
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/twhZBO0UlNDyG0tN0-4m0mh0oIKM2WIwJVdJhBkNmEY.cache
645
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/xCtgNNpIR8fd0Lapcl6ZJn07yGA9G0AoiO2qf-CrRf8.cache
646
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/xkdwrxy6TmnTk-JYNRQU995VtO5IiAe8nTscS9uBWfI.cache
647
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/y--KTSOBOYC4T3CfzpJbExDGVWRmhvR-B8E1rMPSbtI.cache
648
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/yQswlYk44cbTKwozBGSLLK0FHDQZZ9RYKpYO4TYG0Lo.cache
649
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/z1tcJJHpo7HO8epwbTzeLoApbuzFuip81H_J2BFEULQ.cache
650
+ - spec/dummy/tmp/cache/assets/test/sprockets/v3.0/zFNySDTiarqcpPtEvX26xVDa5IrCmhl3VG3gHIVitC4.cache
504
651
  - spec/features/link_authorize_spec.rb
505
652
  - spec/features/list_users_spec.rb
506
653
  - spec/features/log_in_spec.rb
@@ -531,12 +678,12 @@ test_files:
531
678
  - spec/tmp/app/models/user.rb
532
679
  - spec/tmp/config/initializers/sorcery.rb
533
680
  - spec/tmp/config/routes.rb
534
- - spec/tmp/db/migrate/20150323194119_create_role_group_users.rb
535
- - spec/tmp/db/migrate/20150323194120_create_authorizations.rb
536
- - spec/tmp/db/migrate/20150323194121_create_features.rb
537
- - spec/tmp/db/migrate/20150323194122_create_groups.rb
538
- - spec/tmp/db/migrate/20150323194123_create_roles.rb
539
- - spec/tmp/db/migrate/20150323194124_sorcery_core.rb
540
- - spec/tmp/db/migrate/20150323194125_create_group_users.rb
541
- - spec/tmp/db/migrate/20150323194126_create_role_groups.rb
542
- - spec/tmp/db/migrate/20150323194127_create_action_labels.rb
681
+ - spec/tmp/db/migrate/20160930024816_create_features.rb
682
+ - spec/tmp/db/migrate/20160930024817_create_roles.rb
683
+ - spec/tmp/db/migrate/20160930024818_sorcery_core.rb
684
+ - spec/tmp/db/migrate/20160930024819_create_groups.rb
685
+ - spec/tmp/db/migrate/20160930024820_create_group_users.rb
686
+ - spec/tmp/db/migrate/20160930024821_create_authorizations.rb
687
+ - spec/tmp/db/migrate/20160930024822_create_role_group_users.rb
688
+ - spec/tmp/db/migrate/20160930024823_create_role_groups.rb
689
+ - spec/tmp/db/migrate/20160930024824_create_action_labels.rb
@@ -1,4 +0,0 @@
1
- # desc "Explaining what the task does"
2
- # task :curupira do
3
- # # Task goes here
4
- # end