the_role 2.1.1 → 2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +27 -3
- data/.ruby-gemset.example +1 -0
- data/.ruby-version.example +1 -0
- data/.rvmrc.example +1 -1
- data/.travis.yml +2 -2
- data/README.md +46 -47
- data/app/assets/javascripts/the_role_editinplace.js.coffee +32 -0
- data/app/controllers/admin/role_sections_controller.rb +2 -2
- data/app/controllers/admin/roles_controller.rb +2 -2
- data/app/controllers/concerns/controller.rb +23 -0
- data/{lib/generators/the_role/templates → app/models/_templates_}/role.rb +1 -1
- data/app/models/concerns/base.rb +37 -0
- data/app/models/concerns/role.rb +134 -0
- data/app/models/concerns/user.rb +57 -0
- data/app/views/admin/roles/_role.html.haml +90 -69
- data/app/views/admin/roles/_sidebar.html.haml +16 -9
- data/app/views/admin/roles/new.html.haml +11 -10
- data/config/locales/en.yml +1 -0
- data/config/locales/es.yml +28 -28
- data/config/locales/ru.yml +1 -1
- data/db/migrate/20111025025129_create_roles.rb +7 -1
- data/docs/2.1.1.png +0 -0
- data/lib/generators/the_role/USAGE +1 -1
- data/lib/generators/the_role/templates/the_role.rb +7 -2
- data/lib/generators/the_role/the_role_generator.rb +8 -5
- data/lib/tasks/roles.rake +1 -1
- data/lib/the_role/activerecord.rb +11 -0
- data/lib/the_role/config.rb +7 -0
- data/lib/the_role/version.rb +1 -1
- data/lib/the_role.rb +19 -5
- data/spec/dummy_app/.gitignore +18 -0
- data/spec/dummy_app/.rspec +1 -0
- data/spec/dummy_app/Gemfile +32 -0
- data/spec/dummy_app/README.md +39 -0
- data/spec/dummy_app/Rakefile +6 -0
- data/spec/dummy_app/app/assets/images/.keep +0 -0
- data/spec/dummy_app/app/assets/javascripts/application.js +17 -0
- data/spec/dummy_app/app/assets/stylesheets/app/style.css.scss +23 -0
- data/spec/dummy_app/app/assets/stylesheets/application.css +3 -0
- data/spec/dummy_app/app/controllers/application_controller.rb +38 -0
- data/spec/dummy_app/app/controllers/concerns/.keep +0 -0
- data/spec/dummy_app/app/controllers/pages_controller.rb +75 -0
- data/spec/dummy_app/app/controllers/users_controller.rb +32 -0
- data/spec/dummy_app/app/controllers/welcome_controller.rb +13 -0
- data/spec/dummy_app/app/helpers/application_helper.rb +2 -0
- data/spec/dummy_app/app/mailers/.keep +0 -0
- data/spec/dummy_app/app/models/.keep +0 -0
- data/spec/dummy_app/app/models/concerns/.keep +0 -0
- data/spec/dummy_app/app/models/page.rb +24 -0
- data/spec/dummy_app/app/models/role.rb +4 -0
- data/spec/dummy_app/app/models/user.rb +21 -0
- data/spec/dummy_app/app/views/layouts/_current_user_info.html.haml +17 -0
- data/spec/dummy_app/app/views/layouts/application.html.haml +68 -0
- data/spec/dummy_app/app/views/pages/_form.html.haml +19 -0
- data/spec/dummy_app/app/views/pages/edit.html.haml +7 -0
- data/spec/dummy_app/app/views/pages/index.html.haml +27 -0
- data/spec/dummy_app/app/views/pages/manage.html.haml +23 -0
- data/spec/dummy_app/app/views/pages/my.html.haml +10 -0
- data/spec/dummy_app/app/views/pages/new.html.haml +5 -0
- data/spec/dummy_app/app/views/pages/show.html.haml +15 -0
- data/spec/dummy_app/app/views/users/edit.html.haml +34 -0
- data/spec/dummy_app/app/views/welcome/index.html.haml +38 -0
- data/spec/dummy_app/app/views/welcome/profile.html.haml +2 -0
- data/spec/dummy_app/bin/bundle +3 -0
- data/spec/dummy_app/bin/rails +4 -0
- data/spec/dummy_app/bin/rake +4 -0
- data/spec/dummy_app/config/application.rb +23 -0
- data/spec/dummy_app/config/boot.rb +4 -0
- data/spec/dummy_app/config/database.yml +17 -0
- data/spec/dummy_app/config/environment.rb +5 -0
- data/spec/dummy_app/config/environments/development.rb +29 -0
- data/spec/dummy_app/config/environments/production.rb +80 -0
- data/spec/dummy_app/config/environments/test.rb +36 -0
- data/spec/dummy_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy_app/config/initializers/devise.rb +227 -0
- data/spec/dummy_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy_app/config/initializers/inflections.rb +16 -0
- data/spec/dummy_app/config/initializers/mime_types.rb +5 -0
- data/spec/dummy_app/config/initializers/secret_token.rb +12 -0
- data/spec/dummy_app/config/initializers/session_store.rb +3 -0
- data/spec/dummy_app/config/initializers/the_role.rb +6 -0
- data/spec/dummy_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy_app/config/locales/devise.en.yml +57 -0
- data/spec/dummy_app/config/locales/en.yml +7 -0
- data/spec/dummy_app/config/locales/ru.yml +4 -0
- data/spec/dummy_app/config/routes.rb +20 -0
- data/spec/dummy_app/config.ru +4 -0
- data/spec/dummy_app/db/migrate/20120212061952_devise_create_users.rb +63 -0
- data/spec/dummy_app/db/migrate/20120212063249_create_roles.rb +18 -0
- data/spec/dummy_app/db/migrate/20120314061307_create_pages.rb +14 -0
- data/spec/dummy_app/db/schema.rb +59 -0
- data/spec/dummy_app/db/seeds.rb +85 -0
- data/spec/dummy_app/lib/assets/.keep +0 -0
- data/spec/dummy_app/lib/tasks/.keep +0 -0
- data/spec/dummy_app/lib/tasks/assets.rake +15 -0
- data/spec/dummy_app/lib/tasks/db_bootstrap.rake +16 -0
- data/spec/dummy_app/log/.keep +0 -0
- data/spec/dummy_app/public/404.html +58 -0
- data/spec/dummy_app/public/422.html +58 -0
- data/spec/dummy_app/public/500.html +57 -0
- data/spec/dummy_app/public/favicon.ico +0 -0
- data/spec/dummy_app/public/robots.txt +5 -0
- data/spec/dummy_app/spec/controllers/admin_roles_controller_spec.rb +52 -0
- data/spec/dummy_app/spec/controllers/pages_controller_spec.rb +141 -0
- data/spec/dummy_app/spec/controllers/welcome_controller_spec.rb +66 -0
- data/spec/dummy_app/spec/factories/page.rb +6 -0
- data/spec/dummy_app/spec/factories/role.rb +55 -0
- data/spec/dummy_app/spec/factories/user.rb +11 -0
- data/spec/dummy_app/spec/models/hash_spec.rb +272 -0
- data/spec/dummy_app/spec/models/param_process_spec.rb +44 -0
- data/spec/dummy_app/spec/models/role_spec.rb +218 -0
- data/spec/dummy_app/spec/models/user_spec.rb +164 -0
- data/spec/dummy_app/spec/routing/admin_roles_routing_spec.rb +41 -0
- data/spec/dummy_app/spec/routing/pages_routing_spec.rb +35 -0
- data/spec/dummy_app/spec/spec_helper.rb +68 -0
- data/spec/dummy_app/vendor/assets/javascripts/.keep +0 -0
- data/spec/dummy_app/vendor/assets/stylesheets/.keep +0 -0
- data/the_role.gemspec +2 -1
- data/the_role.yml.teamocil.example +11 -0
- metadata +213 -16
- data/app/assets/javascripts/the_role.js.coffee +0 -31
- data/app/assets/stylesheets/the_role/bootstrap_sass.css.scss +0 -20
- data/app/assets/stylesheets/the_role.css.scss +0 -47
- data/app/controllers/the_role_controller.rb +0 -18
- data/app/models/concerns/role_model.rb +0 -125
- data/app/models/concerns/the_role_base.rb +0 -35
- data/app/models/concerns/the_role_user_model.rb +0 -54
@@ -0,0 +1,38 @@
|
|
1
|
+
class ApplicationController < ActionController::Base
|
2
|
+
include TheRole::Controller
|
3
|
+
|
4
|
+
# Prevent CSRF attacks by raising an exception.
|
5
|
+
# For APIs, you may want to use :null_session instead.
|
6
|
+
protect_from_forgery with: :exception
|
7
|
+
|
8
|
+
protect_from_forgery
|
9
|
+
before_filter :set_locale
|
10
|
+
|
11
|
+
def access_denied
|
12
|
+
flash[:error] = t('the_role.access_denied')
|
13
|
+
redirect_to(:back)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def set_locale
|
19
|
+
locale = 'en'
|
20
|
+
langs = %w{ en ru es pl zh_CN }
|
21
|
+
|
22
|
+
if params[:locale]
|
23
|
+
lang = params[:locale]
|
24
|
+
if langs.include? lang
|
25
|
+
locale = lang
|
26
|
+
cookies[:locale] = lang
|
27
|
+
end
|
28
|
+
else
|
29
|
+
if cookies[:locale]
|
30
|
+
lang = cookies[:locale]
|
31
|
+
locale = lang if langs.include? lang
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
I18n.locale = locale
|
36
|
+
redirect_to(:back) if params[:locale]
|
37
|
+
end
|
38
|
+
end
|
File without changes
|
@@ -0,0 +1,75 @@
|
|
1
|
+
class PagesController < ApplicationController
|
2
|
+
# Devise2 and TheRole before_actions
|
3
|
+
before_action :login_required, except: [:index, :show]
|
4
|
+
before_action :role_required, except: [:index, :show]
|
5
|
+
|
6
|
+
before_action :set_page, only: [:edit, :update, :destroy]
|
7
|
+
before_action :owner_required, only: [:edit, :update, :destroy]
|
8
|
+
|
9
|
+
# Public
|
10
|
+
|
11
|
+
def index
|
12
|
+
@pages = Page.with_state(:published).all
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
@page = Page.with_state(:published).find params[:id]
|
17
|
+
end
|
18
|
+
|
19
|
+
# Login && role
|
20
|
+
|
21
|
+
def new
|
22
|
+
@page = Page.new
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
@page = Page.new page_params
|
27
|
+
|
28
|
+
if @page.save
|
29
|
+
redirect_to @page, notice: 'Page was successfully created.'
|
30
|
+
else
|
31
|
+
render action: 'new'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def my
|
36
|
+
@pages = current_user.pages
|
37
|
+
end
|
38
|
+
|
39
|
+
# login && role && ownership
|
40
|
+
|
41
|
+
def edit; end
|
42
|
+
|
43
|
+
def update
|
44
|
+
if @page.update_attributes page_params
|
45
|
+
redirect_to @page, notice: 'Page was successfully updated.'
|
46
|
+
else
|
47
|
+
render action: :edit
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def destroy
|
52
|
+
@page.destroy
|
53
|
+
redirect_to pages_url
|
54
|
+
end
|
55
|
+
|
56
|
+
# Admin or Pages Moderator Role require
|
57
|
+
|
58
|
+
def manage
|
59
|
+
@pages = Page.all
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def set_page
|
65
|
+
@page = Page.find params[:id]
|
66
|
+
|
67
|
+
# TheRole: You should define OWNER CHECK OBJECT
|
68
|
+
# When editable object was found
|
69
|
+
@owner_check_object = @page
|
70
|
+
end
|
71
|
+
|
72
|
+
def page_params
|
73
|
+
params.require(:page).permit(:user_id, :title, :content, :state)
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class UsersController < ApplicationController
|
2
|
+
before_filter :login_required
|
3
|
+
before_filter :role_required
|
4
|
+
|
5
|
+
before_filter :find_user, :only => [:edit, :update]
|
6
|
+
before_filter :owner_required, :only => [:edit, :update]
|
7
|
+
|
8
|
+
def edit; end
|
9
|
+
|
10
|
+
def update
|
11
|
+
@user.update_attributes params[:user]
|
12
|
+
flash[:notice] = 'User was successfully updated.'
|
13
|
+
redirect_to edit_user_path @user
|
14
|
+
end
|
15
|
+
|
16
|
+
def change_role
|
17
|
+
@user = User.find params[:user_id]
|
18
|
+
@role = Role.find params[:role_id]
|
19
|
+
@user.update_attribute(:role, @role)
|
20
|
+
redirect_to edit_user_path @user
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def find_user
|
26
|
+
@user = User.find params[:id]
|
27
|
+
|
28
|
+
# TheRole: You should define OWNER CHECK OBJECT
|
29
|
+
# When editable object was found
|
30
|
+
@owner_check_object = @user
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
class WelcomeController < ApplicationController
|
2
|
+
before_filter :authenticate_user!, :except => [:index, :autologin]
|
3
|
+
|
4
|
+
def index; end
|
5
|
+
def profile; end
|
6
|
+
|
7
|
+
def autologin
|
8
|
+
user = User.find_by_email params[:email]
|
9
|
+
sign_in user if user
|
10
|
+
redirect_to request.referrer || root_path
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,24 @@
|
|
1
|
+
class Page < ActiveRecord::Base
|
2
|
+
# RELATIONS
|
3
|
+
belongs_to :user
|
4
|
+
|
5
|
+
# VALIDATIONS
|
6
|
+
validates :user, presence: true
|
7
|
+
validates :title, presence: true, uniqueness: true
|
8
|
+
validates :content, presence: true
|
9
|
+
|
10
|
+
state_machine :state, :initial => :draft do
|
11
|
+
# events
|
12
|
+
event :to_draft do
|
13
|
+
transition all => :draft
|
14
|
+
end
|
15
|
+
|
16
|
+
event :to_published do
|
17
|
+
transition all => :published
|
18
|
+
end
|
19
|
+
|
20
|
+
event :to_deleted do
|
21
|
+
transition all => :deleted
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
class User < ActiveRecord::Base
|
2
|
+
# Include default devise modules. Others available are:
|
3
|
+
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
|
4
|
+
devise :database_authenticatable, :registerable,
|
5
|
+
:recoverable, :rememberable, :trackable, :validatable
|
6
|
+
|
7
|
+
include TheRole::User
|
8
|
+
# has_role
|
9
|
+
|
10
|
+
# Setup accessible (or protected) attributes for your model
|
11
|
+
# attr_accessible :email, :password, :password_confirmation, :remember_me
|
12
|
+
# User accessible fields
|
13
|
+
# attr_accessible :name, :company, :address
|
14
|
+
|
15
|
+
# When we uncomment this string - test should give fail
|
16
|
+
# just for example, do not uncomment it
|
17
|
+
# attr_accessible :some_protected_field
|
18
|
+
|
19
|
+
# RELATIONS
|
20
|
+
has_many :pages
|
21
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
%h2 Current user
|
2
|
+
|
3
|
+
%p
|
4
|
+
- if user_signed_in?
|
5
|
+
%p
|
6
|
+
%b{ style: "color:green" }= current_user.name
|
7
|
+
%p
|
8
|
+
%i role: #{current_user.role.name}
|
9
|
+
\|
|
10
|
+
= link_to "Sign out", destroy_user_session_path, :method => :delete
|
11
|
+
- else
|
12
|
+
%p
|
13
|
+
%i Guest
|
14
|
+
%p
|
15
|
+
= link_to "Sign in", new_user_session_path
|
16
|
+
\|
|
17
|
+
= link_to "Sign up", new_user_registration_path
|
@@ -0,0 +1,68 @@
|
|
1
|
+
!!!
|
2
|
+
%html
|
3
|
+
%head
|
4
|
+
%title TheRoleTestcase
|
5
|
+
= stylesheet_link_tag :application
|
6
|
+
= javascript_include_tag :application
|
7
|
+
= stylesheet_link_tag "http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css"
|
8
|
+
|
9
|
+
= csrf_meta_tags
|
10
|
+
|
11
|
+
= yield :js
|
12
|
+
= yield :css
|
13
|
+
|
14
|
+
%body
|
15
|
+
.container
|
16
|
+
.row
|
17
|
+
.col-md-12.header
|
18
|
+
%h2 TheRole - Authorization Gem for Ruby on Rails with administrative interface.
|
19
|
+
%h3 Semantic, Flexible, Lightweight
|
20
|
+
|
21
|
+
.row
|
22
|
+
.col-md-3.manage_panel
|
23
|
+
= yield :role_sidebar
|
24
|
+
|
25
|
+
%h4 Basic links
|
26
|
+
|
27
|
+
%ul
|
28
|
+
%li= link_to 'Home', root_path
|
29
|
+
%li= link_to 'pages/index', pages_path
|
30
|
+
%li= link_to 'pages/manage', manage_pages_path
|
31
|
+
%li= link_to 'pages/my', my_pages_path
|
32
|
+
%li= link_to 'admin/roles', admin_roles_path
|
33
|
+
|
34
|
+
= render :partial => 'layouts/current_user_info'
|
35
|
+
|
36
|
+
.col-md-9.main_content
|
37
|
+
- if flash[:notice]
|
38
|
+
.alert.alert-success
|
39
|
+
%a.close{:href => '#', 'data-dismiss' => :alert } ×
|
40
|
+
= flash[:notice]
|
41
|
+
|
42
|
+
- if flash[:error]
|
43
|
+
.alert.alert-danger
|
44
|
+
%a.close{:href => '#', 'data-dismiss' => :alert } ×
|
45
|
+
= flash[:error]
|
46
|
+
|
47
|
+
= yield
|
48
|
+
= yield :role_main
|
49
|
+
|
50
|
+
.row
|
51
|
+
.col-md-3
|
52
|
+
%p
|
53
|
+
= link_to 'TheRole 2', 'https://github.com/the-teacher/the_role'
|
54
|
+
.col-md-9
|
55
|
+
%p
|
56
|
+
= link_to 'en', '/?locale=en'
|
57
|
+
\|
|
58
|
+
= link_to 'ru', '/?locale=ru'
|
59
|
+
\|
|
60
|
+
= link_to 'es', '/?locale=es'
|
61
|
+
\|
|
62
|
+
= link_to 'zh_CN', '/?locale=zh_CN'
|
63
|
+
\|
|
64
|
+
= link_to 'pl', '/?locale=pl'
|
65
|
+
\|
|
66
|
+
%b
|
67
|
+
= t '.current_locale'
|
68
|
+
= I18n.locale
|
@@ -0,0 +1,19 @@
|
|
1
|
+
= form_for @page do |f|
|
2
|
+
-if @page.errors.any?
|
3
|
+
#error_explanation
|
4
|
+
%h2= "#{pluralize(@page.errors.count, "error")} prohibited this page from being saved:"
|
5
|
+
%ul
|
6
|
+
- @page.errors.full_messages.each do |msg|
|
7
|
+
%li= msg
|
8
|
+
|
9
|
+
.field
|
10
|
+
= f.label :user_id
|
11
|
+
= f.number_field :user_id
|
12
|
+
.field
|
13
|
+
= f.label :title
|
14
|
+
= f.text_field :title
|
15
|
+
.field
|
16
|
+
= f.label :content
|
17
|
+
= f.text_area :content
|
18
|
+
.actions
|
19
|
+
= f.submit 'Save'
|
@@ -0,0 +1,27 @@
|
|
1
|
+
%p= link_to 'Back', root_path
|
2
|
+
|
3
|
+
%h1 Listing of #{@pages.count} pages
|
4
|
+
|
5
|
+
%table
|
6
|
+
%tr
|
7
|
+
%th Num
|
8
|
+
%th User
|
9
|
+
%th Title
|
10
|
+
%th State
|
11
|
+
%th
|
12
|
+
%th
|
13
|
+
%th
|
14
|
+
|
15
|
+
- @pages.each_with_index do |page, index|
|
16
|
+
%tr
|
17
|
+
%td
|
18
|
+
- if current_user and current_user.owner?(page)
|
19
|
+
%span{ style: "color:red" }= index.next
|
20
|
+
- else
|
21
|
+
= index.next
|
22
|
+
%td= page.user_id
|
23
|
+
%td= page.title
|
24
|
+
%td= page.state
|
25
|
+
%td= link_to 'Show', page
|
26
|
+
%td= link_to 'Edit', edit_page_path(page)
|
27
|
+
%td= link_to 'Destroy', page, :data => { :confirm => 'Are you sure?' }, :method => :delete
|
@@ -0,0 +1,23 @@
|
|
1
|
+
%p= link_to 'Back', root_path
|
2
|
+
|
3
|
+
%h1 Listing of #{@pages.count} pages
|
4
|
+
|
5
|
+
%table
|
6
|
+
%tr
|
7
|
+
%th Num
|
8
|
+
%th User
|
9
|
+
%th Title
|
10
|
+
%th State
|
11
|
+
%th
|
12
|
+
%th
|
13
|
+
%th
|
14
|
+
|
15
|
+
- @pages.each_with_index do |page, index|
|
16
|
+
%tr
|
17
|
+
%td= index.next
|
18
|
+
%td= page.user_id
|
19
|
+
%td= page.title
|
20
|
+
%td= page.state
|
21
|
+
%td= link_to 'Show', page
|
22
|
+
%td= link_to 'Edit', edit_page_path(page)
|
23
|
+
%td= link_to 'Destroy', page, :data => { :confirm => 'Are you sure?' }, :method => :delete
|
@@ -0,0 +1,34 @@
|
|
1
|
+
- if flash[:notice]
|
2
|
+
%p{ :style => 'background: LightGreen; padding: 10px;' }= flash[:notice]
|
3
|
+
|
4
|
+
%h2{ :style => 'color: gray' } Editable User: #{@user.name} | Role: #{@user.role.name}
|
5
|
+
%h3{ :style => 'color: lightGray' } Current User: #{current_user.name} | Role: #{current_user.role.name}
|
6
|
+
|
7
|
+
%p= link_to 'To index page', '/'
|
8
|
+
|
9
|
+
= form_for @user, :method => :put do |f|
|
10
|
+
.field
|
11
|
+
%p= f.label :name
|
12
|
+
%p= f.text_field :name
|
13
|
+
|
14
|
+
.field
|
15
|
+
%p= f.label :email
|
16
|
+
%p= f.text_field :email
|
17
|
+
|
18
|
+
.field
|
19
|
+
%p= f.label :role_id, 'Protected field'
|
20
|
+
%p= f.text_field :role_id
|
21
|
+
|
22
|
+
.field
|
23
|
+
%p= f.label :some_protected_field, 'Protected field'
|
24
|
+
%p= f.text_field :some_protected_field
|
25
|
+
|
26
|
+
.field
|
27
|
+
%p= f.submit
|
28
|
+
|
29
|
+
|
30
|
+
- if current_user.admin?
|
31
|
+
= form_tag change_role_path, :method => :put do
|
32
|
+
= hidden_field_tag :user_id, @user.id
|
33
|
+
= select_tag :role_id, options_for_select(Role.all.collect{ |r| [r.name, r.id] })
|
34
|
+
= submit_tag
|
@@ -0,0 +1,38 @@
|
|
1
|
+
%h1 Users info
|
2
|
+
|
3
|
+
%ol
|
4
|
+
- User.all.each do |user|
|
5
|
+
%li
|
6
|
+
%b= user.name
|
7
|
+
\-
|
8
|
+
- if user.role
|
9
|
+
%b role: #{user.role.name}
|
10
|
+
- else
|
11
|
+
%b User has not role
|
12
|
+
\-
|
13
|
+
|
|
14
|
+
= link_to 'Login now!', autologin_path(:email => user.email)
|
15
|
+
%p
|
16
|
+
%b password:
|
17
|
+
%i qwerty
|
18
|
+
|
19
|
+
%h1 Edit Users
|
20
|
+
|
21
|
+
%ol
|
22
|
+
- User.all.each do |user|
|
23
|
+
- if user.role
|
24
|
+
%li= link_to "Edit user: #{user.name} [#{user.role.name}]", edit_user_path(user)
|
25
|
+
- else
|
26
|
+
%li User #{user.name} has not role
|
27
|
+
|
28
|
+
%h1 Roles info
|
29
|
+
|
30
|
+
%ol
|
31
|
+
- Role.all.each do |role|
|
32
|
+
%li
|
33
|
+
%b= role.name
|
34
|
+
\-
|
35
|
+
%i= role.description
|
36
|
+
\-
|
37
|
+
- users_list = role.users.map(&:name).join(', ')
|
38
|
+
%b users: [#{users_list}]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require 'rails/all'
|
4
|
+
|
5
|
+
# Require the gems listed in Gemfile, including any gems
|
6
|
+
# you've limited to :test, :development, or :production.
|
7
|
+
Bundler.require(:default, Rails.env)
|
8
|
+
|
9
|
+
module RailsApp
|
10
|
+
class Application < Rails::Application
|
11
|
+
# Settings in config/environments/* take precedence over those specified here.
|
12
|
+
# Application configuration should go into files in config/initializers
|
13
|
+
# -- all .rb files in that directory are automatically loaded.
|
14
|
+
|
15
|
+
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
16
|
+
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
17
|
+
# config.time_zone = 'Central Time (US & Canada)'
|
18
|
+
|
19
|
+
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
20
|
+
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
21
|
+
# config.i18n.default_locale = :de
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
production:
|
2
|
+
adapter: sqlite3
|
3
|
+
database: db/the_role_prod.db
|
4
|
+
pool: 5
|
5
|
+
timeout: 5000
|
6
|
+
|
7
|
+
development:
|
8
|
+
adapter: sqlite3
|
9
|
+
database: db/the_role_dev.db
|
10
|
+
pool: 5
|
11
|
+
timeout: 5000
|
12
|
+
|
13
|
+
test:
|
14
|
+
adapter: sqlite3
|
15
|
+
database: db/the_role_test.db
|
16
|
+
pool: 5
|
17
|
+
timeout: 5000
|
@@ -0,0 +1,29 @@
|
|
1
|
+
RailsApp::Application.configure do
|
2
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
3
|
+
|
4
|
+
# In the development environment your application's code is reloaded on
|
5
|
+
# every request. This slows down response time but is perfect for development
|
6
|
+
# since you don't have to restart the web server when you make code changes.
|
7
|
+
config.cache_classes = false
|
8
|
+
|
9
|
+
# Do not eager load code on boot.
|
10
|
+
config.eager_load = false
|
11
|
+
|
12
|
+
# Show full error reports and disable caching.
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
config.action_controller.perform_caching = false
|
15
|
+
|
16
|
+
# Don't care if the mailer can't send.
|
17
|
+
config.action_mailer.raise_delivery_errors = false
|
18
|
+
|
19
|
+
# Print deprecation notices to the Rails logger.
|
20
|
+
config.active_support.deprecation = :log
|
21
|
+
|
22
|
+
# Raise an error on page load if there are pending migrations
|
23
|
+
config.active_record.migration_error = :page_load
|
24
|
+
|
25
|
+
# Debug mode disables concatenation and preprocessing of assets.
|
26
|
+
# This option may cause significant delays in view rendering with a large
|
27
|
+
# number of complex assets.
|
28
|
+
config.assets.debug = true
|
29
|
+
end
|