the_role 2.3 → 2.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 +4 -4
- data/README.md +37 -38
- data/config/locales/pl.yml +3 -2
- data/config/locales/pt_BR.yml +43 -0
- data/lib/generators/the_role/the_role_generator.rb +1 -1
- data/lib/the_role/version.rb +1 -1
- data/lib/the_role.rb +0 -2
- data/spec/dummy_app/Gemfile +6 -5
- data/spec/dummy_app/README.md +3 -3
- data/the_role.gemspec +0 -1
- metadata +3 -23
- data/app/assets/javascripts/.keep +0 -0
- data/app/assets/javascripts/the_role_editinplace.js.coffee +0 -32
- data/app/views/admin/roles/_role.html.haml +0 -97
- data/app/views/admin/roles/_sidebar.html.haml +0 -18
- data/app/views/admin/roles/edit.html.haml +0 -2
- data/app/views/admin/roles/index.haml +0 -2
- data/app/views/admin/roles/new.html.haml +0 -25
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 390002fab78f75cdae9b6aa2f354133640b21646
|
4
|
+
data.tar.gz: f7ef67983c17684310ec02f606454b58b921a58f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e0512d3c687adf75d494cfee54b1fde431295bc0b59ccd677f3666b9949ea166f7b2a05c19f22192ff54f636de59835e58e3177db11403feee0f4a148339601c
|
7
|
+
data.tar.gz: 172dc91e2f26a1a1dd1f979302c59a7fe7186caff13c404472ed80ac387fa701160cd467a647133c2ba8474f37de8fdb01ab031a0f94935591bd5fc2d6cd1cd7
|
data/README.md
CHANGED
@@ -13,12 +13,16 @@
|
|
13
13
|
</tr>
|
14
14
|
<tr>
|
15
15
|
<td><img src="https://github.com/the-teacher/the_role/raw/master/Bye_bye_CanCan_I_got_the_Role.png" alt="Bye bye CanCan, I got The Role!"></td>
|
16
|
-
<td>TheRole is an authorization library for Ruby on Rails which restricts what resources a given user is allowed to access. All permissions are defined in with 2-level-hash, and
|
16
|
+
<td>TheRole is an authorization library for Ruby on Rails which restricts what resources a given user is allowed to access. All permissions are defined in with 2-level-hash, and stored in the database as a JSON string.<br><br>TheRole - Semantic, lightweight role system with an administrative interface.<br><br>Role is a two-level hash, consisting of the <b>sections</b> and nested <b>rules</b>.<br><br>A <b>Section</b> may be associated with a <b>controller</b> name.<br><br>A <b>Rule</b> may be associated with an <b>action</b> name.<br><br>A Section can have many rules.<br><br>A Rule can be <b>true</b> or <b>false</b>.<br><br><b>Sections</b> and nested <b>Rules</b> provide an <b>ACL</b> (<b>Access Control List</b>)<br><br><br>Using hashes, makes role system extremely easy to configure and use.<br></td>
|
17
17
|
</tr>
|
18
18
|
</table>
|
19
19
|
|
20
20
|
### GUI
|
21
21
|
|
22
|
+
:warn: UI moved in **the_role_bootstrap3_ui** gem
|
23
|
+
|
24
|
+
We are waiting for **foundation** version of UI
|
25
|
+
|
22
26
|
<table>
|
23
27
|
<tr>
|
24
28
|
<td>TheRole management web interface => localhost:3000/admin/roles</td>
|
@@ -38,18 +42,21 @@ puts following yields into your layout:
|
|
38
42
|
### Rails 4 version
|
39
43
|
|
40
44
|
```
|
41
|
-
gem 'the_role', '~> 2.
|
45
|
+
gem 'the_role', '~> 2.4'
|
46
|
+
|
47
|
+
gem 'the_role_bootstrap3_ui'
|
42
48
|
```
|
43
49
|
|
50
|
+
Please read *the_role_bootstrap3_ui* docs to know more about assets
|
51
|
+
|
44
52
|
## If you have any questions
|
45
53
|
|
46
|
-
Please before
|
54
|
+
Please, before asking anything try to launch and play with the **[Dummy App](spec/dummy_app)** in the spec folder. Maybe an example integration will be better than any documentation. Thank you!
|
47
55
|
|
48
56
|
### Instalation
|
49
57
|
|
50
58
|
* [INSTALL](#install)
|
51
59
|
* [INTEGRATION](#integration)
|
52
|
-
* [Assets and Bootstrap](#assets-and-bootstrap)
|
53
60
|
* [Configuration (optional)](#configuration)
|
54
61
|
|
55
62
|
### Understanding
|
@@ -88,7 +95,7 @@ bundle exec rails g the_role --help
|
|
88
95
|
|
89
96
|
### Change User migration
|
90
97
|
|
91
|
-
Add **role_id:integer** field to your User Model
|
98
|
+
Add a **role_id:integer** field to your User Model
|
92
99
|
|
93
100
|
```ruby
|
94
101
|
def self.up
|
@@ -142,7 +149,7 @@ install TheRole migrations
|
|
142
149
|
rake the_role_engine:install:migrations
|
143
150
|
```
|
144
151
|
|
145
|
-
Invoke
|
152
|
+
Invoke migrations
|
146
153
|
|
147
154
|
```ruby
|
148
155
|
rake db:migrate
|
@@ -185,7 +192,7 @@ end
|
|
185
192
|
create the_role config:
|
186
193
|
|
187
194
|
```
|
188
|
-
bundle exec rails g the_role
|
195
|
+
bundle exec rails g the_role config
|
189
196
|
```
|
190
197
|
|
191
198
|
**config/initializers/the_role.rb**
|
@@ -202,7 +209,7 @@ TheRole.configure do |config|
|
|
202
209
|
end
|
203
210
|
```
|
204
211
|
|
205
|
-
####
|
212
|
+
#### Usage with any controller
|
206
213
|
|
207
214
|
```ruby
|
208
215
|
class PagesController < ApplicationController
|
@@ -229,35 +236,26 @@ class PagesController < ApplicationController
|
|
229
236
|
end
|
230
237
|
```
|
231
238
|
|
232
|
-
|
239
|
+
**integration with Inhirited Resource**
|
233
240
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
**application.js**
|
241
|
-
|
242
|
-
```
|
243
|
-
//= require jquery
|
244
|
-
//= require jquery_ujs
|
245
|
-
|
246
|
-
//= require bootstrap
|
247
|
-
//= require the_role_editinplace
|
241
|
+
```ruby
|
242
|
+
def owner_required
|
243
|
+
@owner_check_object = resource
|
244
|
+
super
|
245
|
+
end
|
248
246
|
```
|
249
247
|
|
250
248
|
## Understanding
|
251
249
|
|
252
250
|
#### TheRole instead of CanCan?
|
253
251
|
|
254
|
-
TheRole in contrast to CanCan has simple and predefined way to find access state of current role. If you don't want to create your own role scheme with CanCan Abilities - TheRole can be a great solution for
|
252
|
+
TheRole, in contrast to CanCan, has a simple and predefined way to find the access state of the current role. If you don't want to create your own role scheme with CanCan Abilities - TheRole can be a great solution for you.
|
255
253
|
|
256
|
-
You can manage roles with simple UI. TheRole's ACL structure is inspired by Rails controllers, that
|
254
|
+
You can manage roles with a simple UI. TheRole's ACL structure is inspired by Rails' controllers, that's why it's so great for Rails applications.
|
257
255
|
|
258
|
-
#### What does
|
256
|
+
#### What does semantic mean?
|
259
257
|
|
260
|
-
Semantic - the science of meaning.
|
258
|
+
Semantic - the science of meaning. Humans should be able to quickly understand what is happening in a role system.
|
261
259
|
|
262
260
|
Look at the next Role hash. If you can understand access rules - this authorization system is semantic.
|
263
261
|
|
@@ -299,7 +297,7 @@ But, also, you can use virtual names of sections, and virtual names of section's
|
|
299
297
|
|
300
298
|
And you can use them as well as other access rules.
|
301
299
|
|
302
|
-
####
|
300
|
+
#### Usage within Views
|
303
301
|
|
304
302
|
```ruby
|
305
303
|
<% if @user.has_role?(:twitter, :button) %>
|
@@ -311,11 +309,11 @@ And you can use them as well as other access rules.
|
|
311
309
|
|
312
310
|
#### Who is Administrator?
|
313
311
|
|
314
|
-
Administrator is the user who can access any section and
|
312
|
+
Administrator is the user who can access any section and rules of your application.
|
315
313
|
|
316
314
|
Administrator is the owner of any objects in your application.
|
317
315
|
|
318
|
-
Administrator is the user,
|
316
|
+
Administrator is the user, who has a virtual section **system** and a rule **administrator** in the role-hash.
|
319
317
|
|
320
318
|
|
321
319
|
```ruby
|
@@ -328,13 +326,13 @@ admin_role_fragment = {
|
|
328
326
|
|
329
327
|
#### Who is Moderator?
|
330
328
|
|
331
|
-
Moderator is the user,
|
329
|
+
Moderator is the user, who has access to any actions of some section(s).
|
332
330
|
|
333
331
|
Moderator is the owner of any objects of some class.
|
334
332
|
|
335
|
-
Moderator is the user,
|
333
|
+
Moderator is the user, who has a virtual section **moderator**, with **section name** as rule name.
|
336
334
|
|
337
|
-
|
335
|
+
An example of a Moderator of Pages (controller) and Twitter (virtual section)
|
338
336
|
|
339
337
|
```ruby
|
340
338
|
moderator_role_fragment = {
|
@@ -352,7 +350,7 @@ Administrator is owner of any object in system.
|
|
352
350
|
|
353
351
|
Moderator of pages is owner of any page.
|
354
352
|
|
355
|
-
User is owner of
|
353
|
+
User is owner of objects, when **Object#user_id == User#id**.
|
356
354
|
|
357
355
|
|
358
356
|
# API
|
@@ -364,13 +362,13 @@ User is owner of object, when **Object#user_id == User#id**.
|
|
364
362
|
@user.role # => Role obj
|
365
363
|
```
|
366
364
|
|
367
|
-
Is
|
365
|
+
Is a user Administrator?
|
368
366
|
|
369
367
|
```ruby
|
370
368
|
@user.admin? => true | false
|
371
369
|
```
|
372
370
|
|
373
|
-
Is
|
371
|
+
Is a user Moderator?
|
374
372
|
|
375
373
|
```ruby
|
376
374
|
@user.moderator?(:pages) => true | false
|
@@ -378,7 +376,7 @@ Is it Moderator?
|
|
378
376
|
@user.moderator?(:articles) => true | false
|
379
377
|
```
|
380
378
|
|
381
|
-
Has user got
|
379
|
+
Has user got access to **rule** of **section** (action of controller)?
|
382
380
|
|
383
381
|
```ruby
|
384
382
|
@user.has_role?(:pages, :show) => true | false
|
@@ -451,7 +449,7 @@ Is user **Owner** of object?
|
|
451
449
|
|
452
450
|
```ruby
|
453
451
|
# Incoming hash is true-mask-hash
|
454
|
-
# All the rules of the Role will be
|
452
|
+
# All the rules of the Role will be reset to false
|
455
453
|
# Only rules from true-mask-hash will be set true
|
456
454
|
new_role_hash = {
|
457
455
|
:pages => {
|
@@ -475,6 +473,7 @@ new_role_hash = {
|
|
475
473
|
|
476
474
|
#### Changelog
|
477
475
|
|
476
|
+
* 2.3.0 - Refactoring
|
478
477
|
* 2.1.0 - User#any_role? & Role#any?
|
479
478
|
* 2.0.3 - create role fix, cleanup
|
480
479
|
* 2.0.2 - code cleanup, readme
|
data/config/locales/pl.yml
CHANGED
@@ -14,7 +14,8 @@ pl:
|
|
14
14
|
section_not_deleted: Sekcja nie skasowana
|
15
15
|
section_rule_deleted: "Reguła skasowana"
|
16
16
|
section_rule_not_deleted: "Reguła nie skasowana"
|
17
|
-
|
17
|
+
access_denied: "Odmowa dostępu"
|
18
|
+
|
18
19
|
admin:
|
19
20
|
roles:
|
20
21
|
new:
|
@@ -39,4 +40,4 @@ pl:
|
|
39
40
|
sidebar:
|
40
41
|
roles_list: Lista ról
|
41
42
|
new_role: Utwórz nową rolę
|
42
|
-
delete_role_confirm: '
|
43
|
+
delete_role_confirm: 'Czy jesteś pewien? To może być niebezpieczne!'
|
@@ -0,0 +1,43 @@
|
|
1
|
+
pt-BR:
|
2
|
+
the_role:
|
3
|
+
role_created: Papel criado
|
4
|
+
role_updated: Papel atualizado
|
5
|
+
role_deleted: Papel excluído
|
6
|
+
section_created: Seção criada
|
7
|
+
section_not_created: Sessão não foi criada
|
8
|
+
section_rule_created: "Regra de sessão criada"
|
9
|
+
section_rule_not_created: "Regra de sessão não foi criada"
|
10
|
+
section_rule_on: "Regra de sessão habilitada"
|
11
|
+
section_rule_off: "Regra de sessão desabilitada"
|
12
|
+
state_not_changed: "Regra de sessão não alterada"
|
13
|
+
section_deleted: Sessão excluída
|
14
|
+
section_not_deleted: Sessão não foi excluída
|
15
|
+
section_rule_deleted: "Regra de sessão excluída"
|
16
|
+
section_rule_not_deleted: "Regra de sessão não foi excluída"
|
17
|
+
access_denied: "Acesso negado"
|
18
|
+
|
19
|
+
admin:
|
20
|
+
roles:
|
21
|
+
new:
|
22
|
+
create: Criar novo Papel
|
23
|
+
name: "Nome do Papel (caracteres latinos, com underscore)"
|
24
|
+
title: Título do papel (texto)
|
25
|
+
description: Descrição do papel (texto)
|
26
|
+
role:
|
27
|
+
role_name: 'Nome do papel:'
|
28
|
+
title: 'Título:'
|
29
|
+
role_description: 'Descrição do papel:'
|
30
|
+
delete_section: Excluir sessão
|
31
|
+
section_delete_confirm: 'Deseja excluir a sessão?'
|
32
|
+
rule_delete_confirm: 'Deseja excluir a regra?'
|
33
|
+
enable: Habilitar
|
34
|
+
disable: Desabilitar
|
35
|
+
delete_rule: Excluir regra
|
36
|
+
new_section_placeholder: Nome da nova sessão
|
37
|
+
create_section: Criar nova sessão
|
38
|
+
new_rule_placeholder: Nome da nova regra
|
39
|
+
create_rule: Criar nova regra
|
40
|
+
sidebar:
|
41
|
+
roles_list: Lista de Papéis
|
42
|
+
new_role: Criar novo papel
|
43
|
+
delete_role_confirm: 'Tem certeza? Isto pode ser perigiso!'
|
data/lib/the_role/version.rb
CHANGED
data/lib/the_role.rb
CHANGED
data/spec/dummy_app/Gemfile
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rails'
|
4
|
-
gem 'rake', '~> 10.0.4'
|
3
|
+
gem 'rails'
|
5
4
|
|
5
|
+
gem 'devise'
|
6
6
|
gem 'sqlite3'
|
7
7
|
gem 'state_machine', '~> 1.2.0'
|
8
|
-
gem 'devise', git: 'https://github.com/plataformatec/devise.git'
|
9
8
|
|
10
9
|
gem 'sprockets-rails', github: 'rails/sprockets-rails'
|
11
10
|
gem 'coffee-rails', github: 'rails/coffee-rails'
|
@@ -19,8 +18,10 @@ gem 'uglifier'
|
|
19
18
|
gem 'jquery-rails'
|
20
19
|
gem 'jbuilder', '~> 1.0.1'
|
21
20
|
|
22
|
-
gem 'the_role'
|
23
|
-
gem '
|
21
|
+
gem 'the_role', path: '../../'
|
22
|
+
gem 'the_role_bootstrap3_ui',
|
23
|
+
github: 'the-teacher/the_role_bootstrap3_ui',
|
24
|
+
branch: 'master'
|
24
25
|
|
25
26
|
group :test do
|
26
27
|
gem 'factory_girl_rails', '~> 4.0'
|
data/spec/dummy_app/README.md
CHANGED
@@ -7,7 +7,7 @@ App for development and testing TheRole gem
|
|
7
7
|
```
|
8
8
|
git clone git@github.com:the-teacher/the_role.git
|
9
9
|
|
10
|
-
cd the_role/spec/
|
10
|
+
cd the_role/spec/dummy_app/
|
11
11
|
|
12
12
|
bundle
|
13
13
|
```
|
@@ -15,7 +15,7 @@ bundle
|
|
15
15
|
### Start it!
|
16
16
|
|
17
17
|
```
|
18
|
-
rake db:
|
18
|
+
rake db:bootstrap_and_seed
|
19
19
|
|
20
20
|
rails s
|
21
21
|
```
|
@@ -36,4 +36,4 @@ rake assets:build RAILS_ENV=production
|
|
36
36
|
rake db:test_launch RAILS_ENV=production
|
37
37
|
|
38
38
|
rails s -e production
|
39
|
-
```
|
39
|
+
```
|
data/the_role.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: the_role
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
4
|
+
version: '2.4'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ilya N. Zykin [the-teacher]
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -30,20 +30,6 @@ dependencies:
|
|
30
30
|
- - <
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5'
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: haml
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - '>='
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0'
|
40
|
-
type: :runtime
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - '>='
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
33
|
description: Authorization for Rails 4 with Web Interface
|
48
34
|
email:
|
49
35
|
- zykin-ilya@ya.ru
|
@@ -60,8 +46,6 @@ files:
|
|
60
46
|
- Gemfile
|
61
47
|
- README.md
|
62
48
|
- Rakefile
|
63
|
-
- app/assets/javascripts/.keep
|
64
|
-
- app/assets/javascripts/the_role_editinplace.js.coffee
|
65
49
|
- app/controllers/admin/role_sections_controller.rb
|
66
50
|
- app/controllers/admin/roles_controller.rb
|
67
51
|
- app/controllers/concerns/controller.rb
|
@@ -69,14 +53,10 @@ files:
|
|
69
53
|
- app/models/concerns/base.rb
|
70
54
|
- app/models/concerns/role.rb
|
71
55
|
- app/models/concerns/user.rb
|
72
|
-
- app/views/admin/roles/_role.html.haml
|
73
|
-
- app/views/admin/roles/_sidebar.html.haml
|
74
|
-
- app/views/admin/roles/edit.html.haml
|
75
|
-
- app/views/admin/roles/index.haml
|
76
|
-
- app/views/admin/roles/new.html.haml
|
77
56
|
- config/locales/en.yml
|
78
57
|
- config/locales/es.yml
|
79
58
|
- config/locales/pl.yml
|
59
|
+
- config/locales/pt_BR.yml
|
80
60
|
- config/locales/ru.yml
|
81
61
|
- config/locales/zh_CN.yml
|
82
62
|
- config/routes.rb
|
File without changes
|
@@ -1,32 +0,0 @@
|
|
1
|
-
showForm = (item) ->
|
2
|
-
holder = item.parents('.holder')
|
3
|
-
a_item = holder.children('span.a')
|
4
|
-
b_item = holder.children('span.b')
|
5
|
-
|
6
|
-
a_item.hide().off 'click'
|
7
|
-
b_item.css('visibility', 'visible')
|
8
|
-
|
9
|
-
holder.find('.btn-warning').click ->
|
10
|
-
item = $ @
|
11
|
-
hideForm item
|
12
|
-
item.parents('form')[0].reset()
|
13
|
-
|
14
|
-
holder.find('.btn-success').click ->
|
15
|
-
$(@).parents('form')[0].submit()
|
16
|
-
|
17
|
-
b_item.find('input').keypress (event) ->
|
18
|
-
ENTER = 13
|
19
|
-
form = $(event.target).parents('form')
|
20
|
-
form.submit() if event.which is ENTER
|
21
|
-
|
22
|
-
hideForm = (item) ->
|
23
|
-
holder = item.parents('.holder')
|
24
|
-
a_item = holder.children('span.a')
|
25
|
-
b_item = holder.children('span.b')
|
26
|
-
|
27
|
-
a_item.show()
|
28
|
-
b_item.css('visibility', 'hidden')
|
29
|
-
holder.find('.btn').off('click')
|
30
|
-
a_item.click -> showForm item
|
31
|
-
|
32
|
-
$ -> $('span.a', 'h3, h5').click -> showForm $(@)
|
@@ -1,97 +0,0 @@
|
|
1
|
-
- content_for :role_update_btn_set do
|
2
|
-
.btn-group
|
3
|
-
%a.btn.btn-warning
|
4
|
-
%i.icon-repeat.glyphicon.glyphicon-repeat
|
5
|
-
%a.btn.btn-success
|
6
|
-
%i.icon-ok.glyphicon.glyphicon-ok
|
7
|
-
|
8
|
-
- content_for :role_main do
|
9
|
-
- hidden = 'visibility:hidden'
|
10
|
-
.panel.panel-primary
|
11
|
-
.panel-heading Role Info (edit in place)
|
12
|
-
.panel-body
|
13
|
-
= form_for(role, url: change_admin_role_path(role), html: { class: "form-inline" } ) do |f|
|
14
|
-
.row
|
15
|
-
.col-md-12
|
16
|
-
%h3.holder
|
17
|
-
= t '.role_name'
|
18
|
-
%span.a= role.name
|
19
|
-
%span.b{ style: hidden }
|
20
|
-
.form-group= f.text_field :name, class: "form-control"
|
21
|
-
= yield(:role_update_btn_set)
|
22
|
-
|
23
|
-
.row
|
24
|
-
.col-md-12
|
25
|
-
%h5.holder
|
26
|
-
= t '.title'
|
27
|
-
%span.a= role.title
|
28
|
-
%span.b{ style: hidden }
|
29
|
-
.form-group= f.text_field :title, class: "form-control"
|
30
|
-
= yield(:role_update_btn_set)
|
31
|
-
|
32
|
-
.row
|
33
|
-
.col-md-12
|
34
|
-
%h5.holder
|
35
|
-
= t '.role_description'
|
36
|
-
%span.a= role.description
|
37
|
-
%span.b{ style: hidden }
|
38
|
-
.form-group= f.text_field :description, class: "form-control"
|
39
|
-
= yield(:role_update_btn_set)
|
40
|
-
|
41
|
-
.panel.panel-primary
|
42
|
-
.panel-heading Role rules
|
43
|
-
.panel-body
|
44
|
-
- role.to_hash.each_pair do |section, rules|
|
45
|
-
.panel.panel-info
|
46
|
-
.panel-heading
|
47
|
-
.row
|
48
|
-
.col-md-9
|
49
|
-
%h5= section
|
50
|
-
.col-md-3
|
51
|
-
.delete
|
52
|
-
.btn-group
|
53
|
-
= button_to t('.delete_section'), admin_role_section_path(role, section), method: :delete, class: 'btn btn-danger', data: { confirm: t('.section_delete_confirm') }
|
54
|
-
|
55
|
-
.panel-body
|
56
|
-
.rules
|
57
|
-
- rules.each_pair do |rule, value|
|
58
|
-
.row
|
59
|
-
.col-md-9
|
60
|
-
%h4
|
61
|
-
→
|
62
|
-
= rule
|
63
|
-
.col-md-3
|
64
|
-
.controls
|
65
|
-
.btn-group
|
66
|
-
- klass = value ? :success : :info
|
67
|
-
- state = value ? t('.enable') : t('.disable')
|
68
|
-
%button{ class: "btn btn-#{klass}" }= state
|
69
|
-
%button{ class: "btn btn-#{klass} dropdown-toggle", 'data-toggle' => :dropdown }
|
70
|
-
%span.caret
|
71
|
-
%ul.dropdown-menu
|
72
|
-
%li.success= link_to t('.enable'), rule_on_admin_role_section_path(role, section, :name => rule), :method => :put
|
73
|
-
%li.info= link_to t('.disable'), rule_off_admin_role_section_path(role, section, :name => rule), :method => :put
|
74
|
-
%li.divider
|
75
|
-
%li.error= link_to t('.delete_rule'), destroy_rule_admin_role_section_path(role, section, :name => rule), method: :delete, data: { confirm: t(".rule_delete_confirm") }
|
76
|
-
|
77
|
-
.panel.panel-success
|
78
|
-
.panel-heading
|
79
|
-
= t '.create_section'
|
80
|
-
.panel-body
|
81
|
-
= form_tag admin_role_sections_path(role), class: "form-inline"do |f|
|
82
|
-
.form-group
|
83
|
-
= text_field_tag :section_name, '', class: "form-control", placeholder: t('.new_section_placeholder')
|
84
|
-
= submit_tag t('.create_section'), class: "btn btn-success"
|
85
|
-
|
86
|
-
.panel.panel-success
|
87
|
-
.panel-heading
|
88
|
-
= t '.create_rule'
|
89
|
-
.panel-body
|
90
|
-
= form_tag create_rule_admin_role_sections_path(role), role: :form, class: "form-inline" do |f|
|
91
|
-
.form-group
|
92
|
-
%select.form-control{ name: :section_name }
|
93
|
-
- role.to_hash.each_pair do |section, rules|
|
94
|
-
%option{ value: section }= section
|
95
|
-
.form-group
|
96
|
-
= text_field_tag :rule_name, '', class: "form-control", placeholder: t('.new_rule_placeholder')
|
97
|
-
= submit_tag t('.create_rule'), class: "btn btn-success"
|
@@ -1,18 +0,0 @@
|
|
1
|
-
- content_for :role_sidebar do
|
2
|
-
.panel.panel-primary
|
3
|
-
.panel-heading Role Nav
|
4
|
-
.panel-body
|
5
|
-
%h4= link_to raw('← Home'), root_path
|
6
|
-
|
7
|
-
.panel.panel-primary
|
8
|
-
.panel-heading= t '.roles_list'
|
9
|
-
.panel-body
|
10
|
-
|
11
|
-
- (@roles || Role.all).each do |role|
|
12
|
-
%p
|
13
|
-
= link_to role.title, edit_admin_role_url(role)
|
14
|
-
(#{role.users.count})
|
15
|
-
= link_to admin_role_url(role), method: :delete, title: role.title, confirm: t('.delete_role_confirm'), class: :delete do
|
16
|
-
%i.icon-remove.glyphicon.glyphicon-remove
|
17
|
-
|
18
|
-
%p.new= link_to t('.new_role'), new_admin_role_path
|
@@ -1,25 +0,0 @@
|
|
1
|
-
= render partial: 'sidebar'
|
2
|
-
|
3
|
-
- content_for :role_main do
|
4
|
-
- unless @role.errors.blank?
|
5
|
-
- @role.errors.each do |field, message|
|
6
|
-
.alert.alert-danger
|
7
|
-
%b= t(".#{field}")
|
8
|
-
\:
|
9
|
-
= message
|
10
|
-
|
11
|
-
.panel.panel-success
|
12
|
-
.panel-heading= raw t('.create')
|
13
|
-
|
14
|
-
.panel-body
|
15
|
-
= form_for(@role, url: admin_roles_path, role: :form) do |f|
|
16
|
-
%label= t('.name')
|
17
|
-
%p= f.text_field :name, class: "form-control"
|
18
|
-
|
19
|
-
%label= t('.title')
|
20
|
-
%p= f.text_field :title, class: "form-control"
|
21
|
-
|
22
|
-
%label= t('.description')
|
23
|
-
%p= f.text_field :description, class: "form-control"
|
24
|
-
|
25
|
-
= f.submit t('.create'), class: "btn btn-success"
|