tb_core 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +89 -0
- data/app/assets/javascripts/{spud/admin → admin}/application.js +1 -7
- data/app/assets/javascripts/admin/dashboard.js +9 -0
- data/app/assets/javascripts/admin/split_pane.js +138 -0
- data/app/assets/javascripts/admin/users.js +84 -0
- data/app/assets/stylesheets/{spud/admin/application.css → admin/application.css.scss} +14 -104
- data/app/assets/stylesheets/admin/login.css.scss +49 -0
- data/app/assets/stylesheets/admin/split_pane.css.scss +126 -0
- data/app/assets/stylesheets/admin/users.css.scss +9 -0
- data/app/controllers/{spud/admin → admin}/application_controller.rb +29 -30
- data/app/controllers/admin/dashboard_controller.rb +23 -0
- data/app/controllers/admin/password_resets_controller.rb +51 -0
- data/app/controllers/admin/roles_controller.rb +58 -0
- data/app/controllers/admin/settings_controller.rb +19 -0
- data/app/controllers/admin/setup_controller.rb +24 -0
- data/app/controllers/{spud/admin → admin}/user_sessions_controller.rb +8 -8
- data/app/controllers/admin/users_controller.rb +69 -0
- data/app/controllers/password_resets_controller.rb +52 -0
- data/app/controllers/sitemaps_controller.rb +8 -0
- data/app/controllers/spud/application_controller.rb +6 -20
- data/app/controllers/user_sessions_controller.rb +26 -0
- data/app/helpers/{spud/admin → admin}/application_helper.rb +1 -1
- data/app/helpers/admin/roles_helper.rb +2 -0
- data/app/helpers/spud/application_helper.rb +0 -7
- data/app/mailers/core_mailer.rb +9 -0
- data/app/models/spud_permission.rb +33 -0
- data/app/models/spud_role.rb +32 -0
- data/app/models/spud_role_permission.rb +9 -0
- data/app/models/spud_user.rb +79 -24
- data/app/models/spud_user_setting.rb +3 -3
- data/app/views/{spud/admin → admin}/dashboard/index.html.erb +1 -4
- data/app/views/admin/password_resets/index.html.erb +10 -0
- data/app/views/admin/password_resets/show.html.erb +15 -0
- data/app/views/admin/roles/_form.html.erb +33 -0
- data/app/views/admin/roles/edit.html.erb +2 -0
- data/app/views/admin/roles/index.html.erb +29 -0
- data/app/views/admin/roles/new.html.erb +2 -0
- data/app/views/{spud/admin → admin}/settings/edit.html.erb +6 -1
- data/app/views/admin/setup/new.html.erb +44 -0
- data/app/views/admin/user_sessions/new.html.erb +17 -0
- data/app/views/{spud/admin → admin}/users/_form.html.erb +20 -20
- data/app/views/admin/users/_index.html.erb +15 -0
- data/app/views/admin/users/edit.html.erb +3 -0
- data/app/views/admin/users/index.html.erb +34 -0
- data/app/views/admin/users/new.html.erb +3 -0
- data/app/views/admin/users/show.html.erb +28 -0
- data/app/views/layouts/admin/application.html.erb +68 -0
- data/app/views/layouts/{spud/admin → admin}/detail.html.erb +2 -2
- data/app/views/layouts/admin/login.html.erb +27 -0
- data/app/views/password_resets/index.html.erb +11 -0
- data/app/views/password_resets/show.html.erb +26 -0
- data/app/views/user_sessions/new.html.erb +25 -0
- data/config/routes.rb +22 -15
- data/db/migrate/20130620143010_create_spud_roles.rb +10 -0
- data/db/migrate/20130620143941_create_spud_permissions.rb +10 -0
- data/db/migrate/20130620151132_create_spud_role_permissions.rb +11 -0
- data/db/migrate/20130620163144_drop_spud_admin_permissions.rb +15 -0
- data/db/seeds.rb +3 -0
- data/lib/spud_core/belongs_to_app.rb +35 -48
- data/lib/spud_core/configuration.rb +5 -10
- data/lib/spud_core/engine.rb +31 -6
- data/lib/spud_core/exceptions.rb +7 -0
- data/lib/spud_core/searchable.rb +9 -9
- data/lib/spud_core/version.rb +3 -3
- data/spec/controllers/{spud/admin → admin}/application_controller_spec.rb +10 -6
- data/spec/controllers/{spud/admin → admin}/dashboard_controller_spec.rb +17 -29
- data/spec/controllers/{spud/admin → admin}/password_reset_controller_spec.rb +5 -5
- data/spec/controllers/admin/settings_controller_spec.rb +30 -0
- data/spec/controllers/admin/setup_controller_spec.rb +39 -0
- data/spec/controllers/admin/user_sessions_controller_spec.rb +52 -0
- data/spec/controllers/{spud/admin → admin}/users_controller_spec.rb +19 -35
- data/spec/controllers/{spud/sitemap_controllers_spec.rb → sitemap_controllers_spec.rb} +1 -1
- data/spec/dummy/config/database.yml +2 -2
- data/spec/dummy/db/schema.rb +23 -5
- data/spec/dummy/log/test.log +36118 -0
- data/spec/helpers/spud/admin/application_helper_spec.rb +1 -1
- data/spec/models/spud_role_spec.rb +46 -0
- data/spec/models/spud_user_spec.rb +0 -1
- metadata +101 -97
- data/README.markdown +0 -60
- data/app/assets/images/back_disabled.jpg +0 -0
- data/app/assets/images/back_enabled.jpg +0 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/images/forward_disabled.jpg +0 -0
- data/app/assets/images/forward_enabled.jpg +0 -0
- data/app/assets/images/sort_asc.png +0 -0
- data/app/assets/images/sort_asc_disabled.png +0 -0
- data/app/assets/images/sort_both.png +0 -0
- data/app/assets/images/sort_desc.png +0 -0
- data/app/assets/images/sort_desc_disabled.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_0073ea_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_454545_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png +0 -0
- data/app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png +0 -0
- data/app/assets/images/spud/admin/spud_logo.png +0 -0
- data/app/assets/images/spud/admin/spud_logo@2x.png +0 -0
- data/app/assets/javascripts/spud/admin/dashboard.js +0 -80
- data/app/assets/javascripts/spud/admin/jquery.dataTables.min.js +0 -151
- data/app/assets/stylesheets/spud/forms.css +0 -108
- data/app/assets/stylesheets/spud/login/application.css +0 -302
- data/app/assets/stylesheets/spud/login.css +0 -58
- data/app/assets/stylesheets/spud/setup.css +0 -4
- data/app/assets/stylesheets/spud/sitemaps.css +0 -4
- data/app/assets/stylesheets/spud/user_sessions.css +0 -4
- data/app/assets/stylesheets/spud/users.css +0 -4
- data/app/controllers/spud/admin/dashboard_controller.rb +0 -34
- data/app/controllers/spud/admin/password_resets_controller.rb +0 -52
- data/app/controllers/spud/admin/settings_controller.rb +0 -27
- data/app/controllers/spud/admin/users_controller.rb +0 -109
- data/app/controllers/spud/setup_controller.rb +0 -21
- data/app/controllers/spud/sitemaps_controller.rb +0 -8
- data/app/helpers/spud/password_resets_helper.rb +0 -2
- data/app/mailers/spud/core_mailer.rb +0 -12
- data/app/models/spud_admin_permission.rb +0 -5
- data/app/views/layouts/spud/admin/application.html.erb +0 -73
- data/app/views/layouts/spud/login/application.html.erb +0 -17
- data/app/views/layouts/spud/setup.html.erb +0 -47
- data/app/views/spud/admin/password_resets/index.html.erb +0 -14
- data/app/views/spud/admin/password_resets/show.html.erb +0 -25
- data/app/views/spud/admin/user_sessions/new.html.erb +0 -27
- data/app/views/spud/admin/users/_edit.html.erb +0 -14
- data/app/views/spud/admin/users/_new.html.erb +0 -15
- data/app/views/spud/admin/users/edit.html.erb +0 -3
- data/app/views/spud/admin/users/index.html.erb +0 -42
- data/app/views/spud/admin/users/new.html.erb +0 -3
- data/app/views/spud/admin/users/show.html.erb +0 -12
- data/app/views/spud/setup/index.html.erb +0 -43
- data/spec/controllers/spud/admin/settings_controller_spec.rb +0 -55
- data/spec/controllers/spud/admin/user_sessions_controller_spec.rb +0 -51
- data/spec/controllers/spud/setup_controller_spec.rb +0 -56
- /data/app/assets/images/{spud/admin → admin}/down_arrow.gif +0 -0
- /data/app/assets/images/{spud/admin → admin}/up_arrow.gif +0 -0
- /data/app/assets/images/{spud/admin → admin}/users_thumb.png +0 -0
- /data/app/assets/javascripts/{spud/admin → admin}/date_picker.js +0 -0
- /data/app/assets/javascripts/{spud/admin → admin}/editor.js +0 -0
- /data/app/assets/javascripts/{spud/admin → admin}/preinit.js +0 -0
- /data/app/assets/javascripts/{spud/password_resets.js → admin/roles.js} +0 -0
- /data/app/assets/stylesheets/{spud/admin → admin}/jquery-ui.css +0 -0
- /data/app/assets/stylesheets/{spud/password_resets.css → admin/roles.css} +0 -0
- /data/app/views/{spud/admin → admin}/settings/_form.html.erb +0 -0
- /data/app/views/{spud/core_mailer → core_mailer}/forgot_password_notification.html.erb +0 -0
- /data/app/views/{spud/core_mailer → core_mailer}/forgot_password_notification.text.erb +0 -0
- /data/app/views/{spud/sitemaps → sitemaps}/show.xml.builder +0 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Admin::UserSessionsController do
|
4
|
+
before(:each) do
|
5
|
+
# activate_authlogic
|
6
|
+
# SpudUserSession.create(FactoryGirl.build(:spud_user))
|
7
|
+
end
|
8
|
+
|
9
|
+
describe :new do
|
10
|
+
it "should redirect to setup url if no users exist" do
|
11
|
+
get :new
|
12
|
+
response.should redirect_to(admin_setup_path)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should render login form if users do exist" do
|
16
|
+
u = FactoryGirl.create(:spud_user)
|
17
|
+
u.save
|
18
|
+
get :new
|
19
|
+
response.should be_success
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
describe :create do
|
24
|
+
it "should rerender form when login is invalid" do
|
25
|
+
post :create
|
26
|
+
response.should be_success
|
27
|
+
end
|
28
|
+
it "should redirect to admin root if login is valid" do
|
29
|
+
u = FactoryGirl.create(:spud_user,:login => "testuser")
|
30
|
+
u.save
|
31
|
+
user_session = {:login => "testuser", :password => "password"}
|
32
|
+
post :create, :spud_user_session => user_session
|
33
|
+
response.should redirect_to(admin_root_path)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe :destroy do
|
38
|
+
it "should redirect to login after logout when no referer" do
|
39
|
+
activate_authlogic
|
40
|
+
SpudUserSession.create(FactoryGirl.build(:spud_user))
|
41
|
+
delete :destroy
|
42
|
+
response.should redirect_to(admin_login_path)
|
43
|
+
end
|
44
|
+
it "should redirect to the admin login page after logout" do
|
45
|
+
request.env["HTTP_REFERER"] = "/"
|
46
|
+
activate_authlogic
|
47
|
+
SpudUserSession.create(FactoryGirl.build(:spud_user))
|
48
|
+
delete :destroy
|
49
|
+
response.should redirect_to("/admin/login")
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -1,9 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
3
|
+
describe Admin::UsersController do
|
4
4
|
before(:each) do
|
5
5
|
activate_authlogic
|
6
6
|
@user = SpudUserSession.create(FactoryGirl.build(:spud_user, :super_admin => true))
|
7
|
+
@role = FactoryGirl.create(:spud_role)
|
8
|
+
Spud::Core.admin_applications += [{:name => 'Test', :key => :test}]
|
9
|
+
Spud::Core.permissions.push(SpudPermission.new('admin.test.full_access', 'Test', [:test]))
|
7
10
|
end
|
8
11
|
|
9
12
|
describe :index do
|
@@ -29,27 +32,28 @@ describe Spud::Admin::UsersController do
|
|
29
32
|
|
30
33
|
it "should allow access to users with the correct permissions" do
|
31
34
|
u = FactoryGirl.create(:spud_user, :super_admin => false)
|
32
|
-
|
35
|
+
@role.permission_tags = ['admin.users.full_access']
|
36
|
+
@role.save()
|
37
|
+
u.role = @role
|
33
38
|
SpudUserSession.create(u)
|
34
39
|
get :index
|
35
40
|
|
36
41
|
response.should be_success
|
37
42
|
end
|
38
43
|
|
39
|
-
it "should not allow access to users without
|
44
|
+
it "should not allow access to users without a role, and redirect to root_url if the user has no permissions" do
|
40
45
|
u = FactoryGirl.create(:spud_user, :super_admin => false)
|
41
|
-
u.
|
46
|
+
u.role = nil
|
42
47
|
SpudUserSession.create(u)
|
43
48
|
get :index
|
44
49
|
|
45
50
|
response.should redirect_to(root_url)
|
46
51
|
end
|
47
52
|
|
48
|
-
it "should not allow access to users
|
53
|
+
it "should not allow access to users with a role that contains no permissions, and redirect to root_url if the users has no other admin modules" do
|
49
54
|
u = FactoryGirl.create(:spud_user, :super_admin => false)
|
50
|
-
u.
|
51
|
-
|
52
|
-
]
|
55
|
+
u.role = @role
|
56
|
+
@role.spud_role_permissions = []
|
53
57
|
SpudUserSession.create(u)
|
54
58
|
get :index
|
55
59
|
|
@@ -58,14 +62,12 @@ describe Spud::Admin::UsersController do
|
|
58
62
|
|
59
63
|
it "should not allow access to users without permission and redirect to admin_root if the users has other admin modules" do
|
60
64
|
u = FactoryGirl.create(:spud_user, :super_admin => false)
|
61
|
-
|
62
|
-
|
63
|
-
FactoryGirl.build(:spud_admin_permission, :name => "App2", :access => true)
|
64
|
-
]
|
65
|
+
@role.permission_tags = ['admin.test.full_access']
|
66
|
+
u.role = @role
|
65
67
|
SpudUserSession.create(u)
|
66
68
|
get :index
|
67
69
|
|
68
|
-
response.should redirect_to(
|
70
|
+
response.should redirect_to(admin_root_path)
|
69
71
|
end
|
70
72
|
end
|
71
73
|
|
@@ -105,33 +107,15 @@ describe Spud::Admin::UsersController do
|
|
105
107
|
lambda {
|
106
108
|
post :create, :spud_user => FactoryGirl.attributes_for(:spud_user)
|
107
109
|
}.should change(SpudUser, :count).by(1)
|
108
|
-
response.should be_redirect
|
109
|
-
end
|
110
|
-
|
111
|
-
it "should not create a user with an invalid form entry" do
|
112
|
-
lambda {
|
113
|
-
post :create, :spud_user => FactoryGirl.attributes_for(:spud_user, :email => nil)
|
114
|
-
}.should_not change(SpudUser, :count)
|
115
|
-
flash[:error].should_not be_blank
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
context "JS format" do
|
120
|
-
it "should create a new user with a valid form submission" do
|
121
|
-
lambda {
|
122
|
-
post :create, :spud_user => FactoryGirl.attributes_for(:spud_user), :format => :js
|
123
|
-
}.should change(SpudUser, :count).by(1)
|
124
110
|
response.should be_success
|
125
111
|
end
|
126
112
|
|
127
113
|
it "should not create a user with an invalid form entry" do
|
128
114
|
lambda {
|
129
|
-
post :create, :spud_user => FactoryGirl.attributes_for(:spud_user, :email => nil)
|
115
|
+
post :create, :spud_user => FactoryGirl.attributes_for(:spud_user, :email => nil)
|
130
116
|
}.should_not change(SpudUser, :count)
|
131
|
-
response.should_not be_success
|
132
117
|
end
|
133
|
-
|
134
|
-
end
|
118
|
+
end
|
135
119
|
end
|
136
120
|
|
137
121
|
describe :edit do
|
@@ -166,11 +150,11 @@ describe Spud::Admin::UsersController do
|
|
166
150
|
}.should change(user, :first_name).to(new_name)
|
167
151
|
end
|
168
152
|
|
169
|
-
it "should redirect to the admin users after a successful update" do
|
153
|
+
it "should redirect to the admin users show view after a successful update" do
|
170
154
|
user = FactoryGirl.create(:spud_user)
|
171
155
|
put :update, :id => user.id, :spud_user => user.attributes.merge!(:first_name => "Adam")
|
172
156
|
|
173
|
-
response.should redirect_to(
|
157
|
+
response.should redirect_to(admin_user_path(user))
|
174
158
|
end
|
175
159
|
end
|
176
160
|
|
data/spec/dummy/db/schema.rb
CHANGED
@@ -11,15 +11,31 @@
|
|
11
11
|
#
|
12
12
|
# It's strongly recommended to check this file into your version control system.
|
13
13
|
|
14
|
-
ActiveRecord::Schema.define(:version =>
|
14
|
+
ActiveRecord::Schema.define(:version => 20130620163144) do
|
15
15
|
|
16
|
-
create_table "
|
17
|
-
t.
|
16
|
+
create_table "spud_permissions", :force => true do |t|
|
17
|
+
t.string "name", :null => false
|
18
|
+
t.string "tag", :null => false
|
19
|
+
t.datetime "created_at", :null => false
|
20
|
+
t.datetime "updated_at", :null => false
|
21
|
+
end
|
22
|
+
|
23
|
+
add_index "spud_permissions", ["tag"], :name => "index_spud_permissions_on_tag", :unique => true
|
24
|
+
|
25
|
+
create_table "spud_role_permissions", :force => true do |t|
|
26
|
+
t.integer "spud_role_id", :null => false
|
27
|
+
t.string "spud_permission_tag", :null => false
|
28
|
+
t.datetime "created_at", :null => false
|
29
|
+
t.datetime "updated_at", :null => false
|
30
|
+
end
|
31
|
+
|
32
|
+
add_index "spud_role_permissions", ["spud_permission_tag"], :name => "index_spud_role_permissions_on_spud_permission_tag"
|
33
|
+
add_index "spud_role_permissions", ["spud_role_id"], :name => "index_spud_role_permissions_on_spud_role_id"
|
34
|
+
|
35
|
+
create_table "spud_roles", :force => true do |t|
|
18
36
|
t.string "name"
|
19
|
-
t.boolean "access"
|
20
37
|
t.datetime "created_at", :null => false
|
21
38
|
t.datetime "updated_at", :null => false
|
22
|
-
t.string "scope"
|
23
39
|
end
|
24
40
|
|
25
41
|
create_table "spud_user_settings", :force => true do |t|
|
@@ -51,9 +67,11 @@ ActiveRecord::Schema.define(:version => 20120329174000) do
|
|
51
67
|
t.datetime "created_at", :null => false
|
52
68
|
t.datetime "updated_at", :null => false
|
53
69
|
t.string "time_zone"
|
70
|
+
t.integer "spud_role_id"
|
54
71
|
end
|
55
72
|
|
56
73
|
add_index "spud_users", ["email"], :name => "index_spud_users_on_email"
|
57
74
|
add_index "spud_users", ["login"], :name => "index_spud_users_on_login"
|
75
|
+
add_index "spud_users", ["spud_role_id"], :name => "index_spud_users_on_spud_role_id"
|
58
76
|
|
59
77
|
end
|