typus 1.0.0.pre8 → 1.0.0.pre9
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -6
- data/Gemfile +16 -13
- data/Gemfile.lock +26 -2
- data/Rakefile +2 -3
- data/app/controllers/admin/base_controller.rb +3 -5
- data/app/controllers/admin/resources_controller.rb +24 -26
- data/app/helpers/admin/base_helper.rb +14 -22
- data/app/helpers/admin/dashboard_helper.rb +2 -5
- data/app/helpers/admin/filters_helper.rb +6 -8
- data/app/helpers/admin/form_helper.rb +3 -9
- data/app/helpers/admin/preview_helper.rb +4 -6
- data/app/helpers/admin/relationships_helper.rb +9 -11
- data/app/helpers/admin/resources_helper.rb +6 -24
- data/app/helpers/admin/search_helper.rb +1 -1
- data/app/helpers/admin/sidebar_helper.rb +12 -15
- data/app/helpers/admin/table_helper.rb +13 -13
- data/app/views/admin/dashboard/show.html.erb +1 -1
- data/app/views/admin/helpers/_apps.html.erb +4 -3
- data/app/views/admin/helpers/_header.html.erb +2 -2
- data/app/views/admin/helpers/dashboard/_applications.html.erb +3 -3
- data/app/views/admin/helpers/dashboard/_resources.html.erb +17 -13
- data/app/views/admin/helpers/filters/_filters.html.erb +9 -27
- data/app/views/admin/helpers/resources/_pagination.html.erb +8 -9
- data/app/views/admin/helpers/search/_search.html.erb +1 -1
- data/app/views/admin/mailer/reset_password_link.text.erb +3 -0
- data/app/views/admin/resources/_form.html.erb +4 -4
- data/app/views/admin/resources/edit.html.erb +2 -3
- data/app/views/admin/resources/index.html.erb +15 -13
- data/app/views/admin/resources/new.html.erb +2 -2
- data/app/views/admin/resources/show.html.erb +1 -2
- data/app/views/admin/templates/_boolean.html.erb +1 -1
- data/app/views/admin/templates/_has_many.html.erb +2 -4
- data/app/views/admin/templates/_has_n.html.erb +1 -1
- data/app/views/admin/templates/_selector.html.erb +0 -1
- data/app/views/admin/templates/_string.html.erb +1 -1
- data/app/views/layouts/admin/session.html.erb +1 -1
- data/config/available_locales/ca.yml +3 -5
- data/config/available_locales/de.yml +2 -4
- data/config/available_locales/es.yml +2 -4
- data/config/available_locales/fr.yml +40 -39
- data/config/available_locales/fr_models.yml +2 -2
- data/config/available_locales/hu.yml +3 -5
- data/config/available_locales/it.yml +0 -4
- data/config/available_locales/language.yml.template +2 -4
- data/config/available_locales/pt-BR.yml +2 -4
- data/config/available_locales/ru.yml +2 -4
- data/config/routes.rb +1 -0
- data/lib/generators/templates/config/initializers/typus.rb +5 -5
- data/lib/generators/templates/config/initializers/typus_authentication.rb +5 -5
- data/lib/generators/templates/config/initializers/typus_resources.rb +7 -7
- data/lib/generators/templates/config/typus/README +11 -13
- data/lib/generators/templates/controller.rb +0 -2
- data/lib/generators/templates/functional_test.rb +4 -15
- data/lib/generators/typus/migration_generator.rb +0 -1
- data/lib/support/active_record.rb +18 -9
- data/lib/support/fake_user.rb +42 -0
- data/lib/support/object.rb +1 -0
- data/lib/support/string.rb +0 -32
- data/lib/tasks/typus.rake +0 -8
- data/lib/typus.rb +34 -18
- data/lib/typus/authentication/base.rb +26 -0
- data/lib/typus/authentication/http_basic.rb +22 -0
- data/lib/typus/authentication/none.rb +19 -0
- data/lib/typus/authentication/session.rb +190 -0
- data/lib/typus/format.rb +12 -19
- data/lib/typus/orm/active_record.rb +13 -51
- data/lib/typus/resources.rb +0 -9
- data/lib/typus/version.rb +1 -1
- data/test/factories.rb +43 -0
- data/test/fixtures/rails_app/app/controllers/application_controller.rb +0 -1
- data/test/fixtures/rails_app/app/models/page.rb +0 -4
- data/test/fixtures/rails_app/config/application.rb +6 -3
- data/test/fixtures/rails_app/config/database.yml +12 -20
- data/test/fixtures/rails_app/config/typus/application.yml +4 -8
- data/test/fixtures/rails_app/db/test.sqlite3 +0 -0
- data/test/fixtures/rails_app/log/test.log +227115 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012213057.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012213132.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012213234.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012213506.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215057.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215217.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215415.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215443.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215509.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215528.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215551.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215615.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215640.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215714.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215744.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215814.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215836.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012215906.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012220659.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012221043.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012221258.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012222558.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012222752.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012222848.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012223433.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012223535.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224003.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224052.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224109.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224139.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224205.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012224243.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101012225119.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063215.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063300.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063352.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063427.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063448.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063530.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063559.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063646.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063737.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063822.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063837.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063919.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063939.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013063952.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064220.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064253.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064318.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064404.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064452.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064536.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064652.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013064845.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013065023.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013065137.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013065713.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013065954.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070057.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070116.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070156.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070349.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070429.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070448.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070514.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070709.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070745.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070809.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070905.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013070955.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071116.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071209.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071335.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071632.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071643.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071735.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013071749.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072030.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072050.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072108.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072713.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072751.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013072912.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101013074546.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101018180512.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101018183359.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101018183608.csv +2 -0
- data/test/fixtures/rails_app/tmp/export-posts-20101018183759.csv +2 -0
- data/test/functional/admin/account_controller_test.rb +1 -1
- data/test/functional/admin/{resources_controller_assets_relationships.rb → assets_controller_test.rb} +12 -16
- data/test/functional/admin/categories_controller_test.rb +62 -0
- data/test/functional/admin/{resources_controller_comments_toggle_test.rb → comments_controller_test.rb} +0 -0
- data/test/functional/admin/dashboard_controller_test.rb +34 -2
- data/test/functional/admin/posts_controller_test.rb +548 -0
- data/test/functional/admin/session_controller_test.rb +2 -2
- data/test/functional/admin/{resources_controller_tableless_resource_test.rb → status_controller_test.rb} +0 -0
- data/test/functional/admin/{resources_controller_typus_users_test.rb → typus_users_controller_test.rb} +2 -2
- data/test/helpers/admin/base_helper_test.rb +35 -37
- data/test/helpers/admin/dashboard_helper_test.rb +4 -8
- data/test/helpers/admin/form_helper_test.rb +9 -34
- data/test/helpers/admin/resources_helper_test.rb +28 -16
- data/test/helpers/admin/sidebar_helper_test.rb +14 -27
- data/test/helpers/admin/table_helper_test.rb +24 -68
- data/test/integration/login_test.rb +13 -0
- data/test/integration_test_helper.rb +21 -0
- data/test/lib/support/active_record_test.rb +72 -21
- data/test/lib/support/array_test.rb +2 -6
- data/test/lib/support/string_test.rb +21 -30
- data/test/lib/typus/active_record_test.rb +162 -100
- data/test/lib/typus/resource_test.rb +2 -3
- data/test/lib/typus_test.rb +25 -22
- data/test/test_helper.rb +4 -17
- data/test/unit/admin/mailer_test.rb +2 -2
- data/test/unit/typus_user_roles_test.rb +23 -23
- data/test/unit/typus_user_test.rb +30 -24
- data/typus.gemspec +0 -1
- metadata +111 -60
- data/app/models/admin/fake_user.rb +0 -46
- data/lib/generators/templates/model.yml +0 -10
- data/lib/typus/authentication.rb +0 -241
- data/lib/vendor/paginator.rb +0 -143
- data/test/factories/assets.rb +0 -5
- data/test/factories/categories.rb +0 -3
- data/test/factories/comments.rb +0 -6
- data/test/factories/pages.rb +0 -5
- data/test/factories/pictures.rb +0 -7
- data/test/factories/posts.rb +0 -6
- data/test/factories/typus_users.rb +0 -8
- data/test/fixtures/rails_app/README +0 -244
- data/test/fixtures/rails_app/app/helpers/application_helper.rb +0 -2
- data/test/fixtures/rails_app/app/views/layouts/application.html.erb +0 -14
- data/test/fixtures/rails_app/config/environments/development.rb +0 -19
- data/test/fixtures/rails_app/config/environments/production.rb +0 -42
- data/test/fixtures/rails_app/config/initializers/acts_as_list.rb +0 -258
- data/test/fixtures/rails_app/config/initializers/acts_as_tree.rb +0 -98
- data/test/fixtures/rails_app/config/initializers/backtrace_silencers.rb +0 -7
- data/test/fixtures/rails_app/config/initializers/inflections.rb +0 -10
- data/test/fixtures/rails_app/config/initializers/mime_types.rb +0 -5
- data/test/fixtures/rails_app/config/locales/en.yml +0 -5
- data/test/fixtures/rails_app/db/seeds.rb +0 -7
- data/test/fixtures/rails_app/public/404.html +0 -26
- data/test/fixtures/rails_app/public/422.html +0 -26
- data/test/fixtures/rails_app/public/500.html +0 -26
- data/test/fixtures/rails_app/public/favicon.ico +0 -0
- data/test/fixtures/rails_app/public/images/rails.png +0 -0
- data/test/fixtures/rails_app/public/index.html +0 -279
- data/test/fixtures/rails_app/public/javascripts/application.js +0 -2
- data/test/fixtures/rails_app/public/javascripts/controls.js +0 -965
- data/test/fixtures/rails_app/public/javascripts/dragdrop.js +0 -974
- data/test/fixtures/rails_app/public/javascripts/effects.js +0 -1123
- data/test/fixtures/rails_app/public/javascripts/prototype.js +0 -4874
- data/test/fixtures/rails_app/public/javascripts/rails.js +0 -118
- data/test/fixtures/rails_app/public/robots.txt +0 -5
- data/test/fixtures/rails_app/script/rails +0 -9
- data/test/functional/admin/dashboard_controller_http_basic_test.rb +0 -24
- data/test/functional/admin/dashboard_controller_none_test.rb +0 -18
- data/test/functional/admin/resources_controller_categories_before_test.rb +0 -10
- data/test/functional/admin/resources_controller_categories_lists_test.rb +0 -44
- data/test/functional/admin/resources_controller_categories_views_test.rb +0 -10
- data/test/functional/admin/resources_controller_posts_before_test.rb +0 -10
- data/test/functional/admin/resources_controller_posts_crud_custom_test.rb +0 -27
- data/test/functional/admin/resources_controller_posts_crud_test.rb +0 -44
- data/test/functional/admin/resources_controller_posts_formats_test.rb +0 -39
- data/test/functional/admin/resources_controller_posts_forms_test.rb +0 -58
- data/test/functional/admin/resources_controller_posts_permissions_test.rb +0 -100
- data/test/functional/admin/resources_controller_posts_relationships_test.rb +0 -91
- data/test/functional/admin/resources_controller_posts_roles.rb +0 -52
- data/test/functional/admin/resources_controller_posts_views_test.rb +0 -143
- data/test/lib/vendor/paginator_test.rb +0 -141
- data/typus-1.0.0.pre7.gem +0 -0
data/lib/tasks/typus.rake
CHANGED
@@ -8,12 +8,4 @@ namespace :typus do
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
desc "Install acts_as_list, acts_as_tree and paperclip."
|
12
|
-
task :misc do
|
13
|
-
plugins = [ "git://github.com/thoughtbot/paperclip.git",
|
14
|
-
"git://github.com/rails/acts_as_list.git",
|
15
|
-
"git://github.com/rails/acts_as_tree.git" ]
|
16
|
-
system "rails plugin install #{plugins.join(" ")} --force"
|
17
|
-
end
|
18
|
-
|
19
11
|
end
|
data/lib/typus.rb
CHANGED
@@ -5,67 +5,83 @@ require "support/array"
|
|
5
5
|
require "support/hash"
|
6
6
|
require "support/object"
|
7
7
|
require "support/string"
|
8
|
+
|
8
9
|
require "typus/engine"
|
9
|
-
require "typus/configuration"
|
10
|
-
require "typus/resources"
|
11
10
|
require "typus/orm/active_record"
|
12
11
|
require "typus/user"
|
13
|
-
|
12
|
+
|
13
|
+
autoload :FakeUser, "support/fake_user"
|
14
14
|
|
15
15
|
module Typus
|
16
16
|
|
17
|
-
|
17
|
+
autoload :Configuration, "typus/configuration"
|
18
|
+
autoload :Resources, "typus/resources"
|
19
|
+
|
20
|
+
module Authentication
|
21
|
+
autoload :Base, "typus/authentication/base"
|
22
|
+
autoload :None, "typus/authentication/none"
|
23
|
+
autoload :HttpBasic, "typus/authentication/http_basic"
|
24
|
+
autoload :Session, "typus/authentication/session"
|
25
|
+
end
|
26
|
+
|
18
27
|
mattr_accessor :admin_title
|
19
28
|
@@admin_title = "Typus"
|
20
29
|
|
21
|
-
# Define a subtitle
|
22
30
|
mattr_accessor :admin_sub_title
|
23
31
|
@@admin_sub_title = <<-CODE
|
24
32
|
<a href="http://core.typuscms.com/">typus</a> by <a href="http://intraducibles.com">intraducibles.com</a>
|
25
33
|
CODE
|
26
34
|
|
27
|
-
|
35
|
+
##
|
36
|
+
# Available Authentication Mechanisms are:
|
37
|
+
#
|
38
|
+
# - none
|
39
|
+
# - basic: Uses http authentication
|
40
|
+
# - session
|
41
|
+
#
|
28
42
|
mattr_accessor :authentication
|
29
43
|
@@authentication = :none
|
30
44
|
|
31
|
-
# Define the configuration folder.
|
32
45
|
mattr_accessor :config_folder
|
33
46
|
@@config_folder = "config/typus"
|
34
47
|
|
35
|
-
# Define the username
|
36
48
|
mattr_accessor :username
|
37
49
|
@@username = "admin"
|
38
50
|
|
39
|
-
|
40
|
-
#
|
51
|
+
##
|
52
|
+
# Define a password.
|
53
|
+
#
|
54
|
+
# Used as default password for http and advances authentication.
|
55
|
+
#
|
41
56
|
mattr_accessor :password
|
42
57
|
@@password = "columbia"
|
43
58
|
|
59
|
+
##
|
44
60
|
# Configure the e-mail address which will be shown in Admin::Mailer.
|
61
|
+
#
|
62
|
+
# When `nil`, the `forgot_password` will be disabled.
|
63
|
+
#
|
45
64
|
mattr_accessor :mailer_sender
|
46
65
|
@@mailer_sender = nil
|
47
66
|
|
48
|
-
# Define the file preview.
|
49
67
|
mattr_accessor :file_preview
|
50
68
|
@@file_preview = :medium
|
51
69
|
|
52
|
-
# Define the file thumbnail.
|
53
70
|
mattr_accessor :file_thumbnail
|
54
71
|
@@file_thumbnail = :thumb
|
55
72
|
|
73
|
+
##
|
56
74
|
# Defines the default relationship table.
|
75
|
+
#
|
57
76
|
mattr_accessor :relationship
|
58
77
|
@@relationship = "typus_users"
|
59
78
|
|
60
|
-
# Defines the default master role.
|
61
79
|
mattr_accessor :master_role
|
62
80
|
@@master_role = "admin"
|
63
81
|
|
64
|
-
# Defines the default user_class_name.
|
65
82
|
mattr_accessor :user_class_name
|
66
83
|
@@user_class_name = "TypusUser"
|
67
84
|
|
68
|
-
# Defines the default user_fk.
|
69
85
|
mattr_accessor :user_fk
|
70
86
|
@@user_fk = "typus_user_id"
|
71
87
|
|
@@ -74,8 +90,8 @@ module Typus
|
|
74
90
|
|
75
91
|
class << self
|
76
92
|
|
77
|
-
# Default way to setup typus. Run rails generate typus to create
|
78
|
-
#
|
93
|
+
# Default way to setup typus. Run `rails generate typus` to create a fresh
|
94
|
+
# initializer with all configuration values.
|
79
95
|
def setup
|
80
96
|
yield self
|
81
97
|
end
|
@@ -115,7 +131,7 @@ module Typus
|
|
115
131
|
|
116
132
|
def locales
|
117
133
|
human = available_locales.map { |i| locales_mapping[i.to_s] }
|
118
|
-
available_locales.map { |i| i.to_s }.to_hash_with(human)
|
134
|
+
available_locales.map { |i| i.to_s }.to_hash_with(human).invert
|
119
135
|
end
|
120
136
|
|
121
137
|
def locales_mapping
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Typus
|
2
|
+
|
3
|
+
module Authentication
|
4
|
+
|
5
|
+
module Base
|
6
|
+
|
7
|
+
def current_user
|
8
|
+
@current_user
|
9
|
+
end
|
10
|
+
|
11
|
+
def authenticate; end
|
12
|
+
def check_if_user_can_perform_action_on_user; end
|
13
|
+
def check_if_user_can_perform_action_on_resources; end
|
14
|
+
def check_if_user_can_perform_action_on_resource; end
|
15
|
+
def check_resource_ownership; end
|
16
|
+
def check_resource_ownerships; end
|
17
|
+
def check_ownership_of_referal_item; end
|
18
|
+
def set_attributes_on_create; end
|
19
|
+
def set_attributes_on_update; end
|
20
|
+
def reload_locales; end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Typus
|
2
|
+
|
3
|
+
module Authentication
|
4
|
+
|
5
|
+
module HttpBasic
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
include Base
|
10
|
+
|
11
|
+
def authenticate
|
12
|
+
@current_user = FakeUser.new
|
13
|
+
authenticate_or_request_with_http_basic(Typus.admin_title) do |user_name, password|
|
14
|
+
user_name == Typus.username && password == Typus.password
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
@@ -0,0 +1,190 @@
|
|
1
|
+
module Typus
|
2
|
+
|
3
|
+
module Authentication
|
4
|
+
|
5
|
+
module Session
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
include Base
|
10
|
+
|
11
|
+
def authenticate
|
12
|
+
if session[:typus_user_id]
|
13
|
+
current_user
|
14
|
+
else
|
15
|
+
back_to = request.env['PATH_INFO'] unless [admin_dashboard_path, admin_path].include?(request.env['PATH_INFO'])
|
16
|
+
redirect_to new_admin_session_path(:back_to => back_to)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
#--
|
21
|
+
# Return the current user. If role does not longer exist on the
|
22
|
+
# system current_user will be signed out from Typus.
|
23
|
+
#++
|
24
|
+
def current_user
|
25
|
+
|
26
|
+
user = Typus.user_class.find(session[:typus_user_id])
|
27
|
+
|
28
|
+
unless Typus::Configuration.roles.has_key?(user.role)
|
29
|
+
raise _t("Role does no longer exists.")
|
30
|
+
end
|
31
|
+
|
32
|
+
unless user.status
|
33
|
+
back_to = (request.env['REQUEST_URI'] == admin_dashboard_path) ? nil : request.env['REQUEST_URI']
|
34
|
+
raise _t("Typus user has been disabled.")
|
35
|
+
end
|
36
|
+
|
37
|
+
I18n.locale = user.preferences[:locale]
|
38
|
+
|
39
|
+
return user
|
40
|
+
|
41
|
+
rescue Exception => error
|
42
|
+
session[:typus_user_id] = nil
|
43
|
+
redirect_to new_admin_session_path(:back_to => back_to), :notice => error.message
|
44
|
+
end
|
45
|
+
|
46
|
+
#--
|
47
|
+
# Action is available on: edit, update, toggle and destroy
|
48
|
+
#++
|
49
|
+
def check_if_user_can_perform_action_on_user
|
50
|
+
return unless @item.kind_of?(Typus.user_class)
|
51
|
+
|
52
|
+
message = case params[:action]
|
53
|
+
when 'edit'
|
54
|
+
# Only admin and owner of Typus User can edit.
|
55
|
+
if current_user.is_not_root? && (current_user != @item)
|
56
|
+
_t("As you're not the admin or the owner of this record you cannot edit it.")
|
57
|
+
end
|
58
|
+
when 'update'
|
59
|
+
# current_user cannot change her role.
|
60
|
+
if current_user && !(@item.role == params[@object_name][:role])
|
61
|
+
_t("You can't change your role.")
|
62
|
+
end
|
63
|
+
when 'toggle'
|
64
|
+
# Only admin can toggle typus user status, but not herself.
|
65
|
+
if current_user.is_root? && (current_user == @item)
|
66
|
+
_t("You can't toggle your status.")
|
67
|
+
elsif current_user.is_not_root?
|
68
|
+
_t("You're not allowed to toggle status.")
|
69
|
+
end
|
70
|
+
when 'destroy'
|
71
|
+
# Admin can remove anything except herself.
|
72
|
+
if current_user.is_root? && (current_user == @item)
|
73
|
+
_t("You can't remove yourself.")
|
74
|
+
elsif current_user.is_not_root?
|
75
|
+
_t("You're not allowed to remove Typus Users.")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
redirect_to set_path, :notice => message if message
|
80
|
+
end
|
81
|
+
|
82
|
+
#--
|
83
|
+
# This method checks if the user can perform the requested action.
|
84
|
+
# It works on models, so its available on the `resources_controller`.
|
85
|
+
#++
|
86
|
+
def check_if_user_can_perform_action_on_resources
|
87
|
+
|
88
|
+
message = case params[:action]
|
89
|
+
when 'index', 'show'
|
90
|
+
"%{current_user_role} can't display items."
|
91
|
+
when 'destroy'
|
92
|
+
"%{current_user_role} can't delete this item."
|
93
|
+
else
|
94
|
+
"%{current_user_role} can't perform action. (%{action})"
|
95
|
+
end
|
96
|
+
|
97
|
+
message = _t(message,
|
98
|
+
:current_user_role => current_user.role.capitalize,
|
99
|
+
:action => params[:action])
|
100
|
+
|
101
|
+
unless current_user.can?(params[:action], @resource)
|
102
|
+
redirect_to set_path, :notice => message
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
#--
|
108
|
+
# This method checks if the user can perform the requested action.
|
109
|
+
# It works on a resource: git, memcached, syslog ...
|
110
|
+
#++
|
111
|
+
def check_if_user_can_perform_action_on_resource
|
112
|
+
controller = params[:controller].remove_prefix
|
113
|
+
action = params[:action]
|
114
|
+
unless current_user.can?(action, controller.camelize, { :special => true })
|
115
|
+
render :text => "Not allowed!", :status => :unprocessable_entity
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
#--
|
120
|
+
# If item is owned by another user, we only can perform a
|
121
|
+
# show action on the item. Updated item is also blocked.
|
122
|
+
#
|
123
|
+
# before_filter :check_resource_ownership, :only => [ :edit, :update, :destroy,
|
124
|
+
# :toggle, :position,
|
125
|
+
# :relate, :unrelate ]
|
126
|
+
#++
|
127
|
+
def check_resource_ownership
|
128
|
+
|
129
|
+
# By-pass if current_user is root.
|
130
|
+
return if current_user.is_root?
|
131
|
+
|
132
|
+
condition_typus_users = @item.respond_to?(Typus.relationship) && !@item.send(Typus.relationship).include?(current_user)
|
133
|
+
condition_typus_user_id = @item.respond_to?(Typus.user_fk) && !@item.owned_by?(current_user)
|
134
|
+
|
135
|
+
if condition_typus_users || condition_typus_user_id
|
136
|
+
alert = _t("You don't have permission to access this item.")
|
137
|
+
redirect_to set_path, :alert => alert
|
138
|
+
end
|
139
|
+
|
140
|
+
end
|
141
|
+
|
142
|
+
def check_resource_ownerships
|
143
|
+
|
144
|
+
# By-pass if current_user is root.
|
145
|
+
return if current_user.is_root?
|
146
|
+
|
147
|
+
# Show only related items it @resource has a foreign_key (Typus.user_fk)
|
148
|
+
# related to the logged user.
|
149
|
+
if @resource.typus_user_id?
|
150
|
+
condition = { Typus.user_fk => current_user }
|
151
|
+
@conditions = @resource.merge_conditions(@conditions, condition)
|
152
|
+
end
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
def check_ownership_of_referal_item
|
157
|
+
return unless params[:resource] && params[:resource_id]
|
158
|
+
klass = params[:resource].classify.constantize
|
159
|
+
return if !klass.typus_user_id?
|
160
|
+
item = klass.find(params[:resource_id])
|
161
|
+
raise "You're not owner of this record." unless item.owned_by?(current_user) || current_user.is_root?
|
162
|
+
end
|
163
|
+
|
164
|
+
def set_attributes_on_create
|
165
|
+
if @resource.typus_user_id?
|
166
|
+
@item.attributes = { Typus.user_fk => current_user.id }
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def set_attributes_on_update
|
171
|
+
if @resource.typus_user_id? && current_user.is_not_root?
|
172
|
+
@item.update_attributes(Typus.user_fk => current_user.id)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
#--
|
177
|
+
# Reload current_user when updating to see flash message in the
|
178
|
+
# correct locale.
|
179
|
+
#++
|
180
|
+
def reload_locales
|
181
|
+
if @resource.eql?(Typus.user_class)
|
182
|
+
I18n.locale = current_user.reload.preferences[:locale]
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
data/lib/typus/format.rb
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
if RUBY_VERSION >= '1.9'
|
2
|
+
require 'csv'
|
3
|
+
FasterCSV = CSV
|
4
|
+
end
|
5
|
+
|
1
6
|
module Typus
|
2
7
|
|
3
8
|
module Format
|
@@ -5,7 +10,6 @@ module Typus
|
|
5
10
|
protected
|
6
11
|
|
7
12
|
def generate_html
|
8
|
-
|
9
13
|
items_count = @resource.count(:joins => @joins, :conditions => @conditions)
|
10
14
|
items_per_page = @resource.typus_options_for(:per_page)
|
11
15
|
|
@@ -14,7 +18,6 @@ module Typus
|
|
14
18
|
end
|
15
19
|
|
16
20
|
@items = @pager.page(params[:page])
|
17
|
-
|
18
21
|
end
|
19
22
|
|
20
23
|
#--
|
@@ -23,27 +26,13 @@ module Typus
|
|
23
26
|
# We should find a way to be able to process data.
|
24
27
|
#++
|
25
28
|
def generate_csv
|
26
|
-
|
27
29
|
fields = @resource.typus_fields_for(:csv)
|
28
30
|
|
29
|
-
require 'csv'
|
30
|
-
if CSV.const_defined?(:Reader)
|
31
|
-
# Old CSV version so we enable faster CSV.
|
32
|
-
begin
|
33
|
-
require 'fastercsv'
|
34
|
-
rescue Exception => error
|
35
|
-
raise error.message
|
36
|
-
end
|
37
|
-
csv = FasterCSV
|
38
|
-
else
|
39
|
-
csv = CSV
|
40
|
-
end
|
41
|
-
|
42
31
|
filename = Rails.root.join("tmp", "export-#{@resource.to_resource}-#{Time.zone.now.to_s(:number)}.csv")
|
43
32
|
|
44
33
|
options = { :conditions => @conditions, :batch_size => 1000 }
|
45
34
|
|
46
|
-
|
35
|
+
FasterCSV.open(filename, 'w', :col_sep => ';') do |csv|
|
47
36
|
csv << fields.keys
|
48
37
|
@resource.find_in_batches(options) do |records|
|
49
38
|
records.each do |record|
|
@@ -63,11 +52,15 @@ module Typus
|
|
63
52
|
end
|
64
53
|
|
65
54
|
send_file filename
|
55
|
+
end
|
66
56
|
|
57
|
+
def generate_json
|
58
|
+
export(:json)
|
67
59
|
end
|
68
60
|
|
69
|
-
def
|
70
|
-
|
61
|
+
def generate_xml
|
62
|
+
export(:xml)
|
63
|
+
end
|
71
64
|
|
72
65
|
def export(format)
|
73
66
|
fields = @resource.typus_fields_for(format).collect { |i| i.first }
|