tb_core 1.0.2 → 1.1.0

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.
Files changed (153) hide show
  1. checksums.yaml +8 -8
  2. data/README.md +89 -0
  3. data/app/assets/javascripts/{spud/admin → admin}/application.js +1 -7
  4. data/app/assets/javascripts/admin/dashboard.js +9 -0
  5. data/app/assets/javascripts/admin/split_pane.js +138 -0
  6. data/app/assets/javascripts/admin/users.js +84 -0
  7. data/app/assets/stylesheets/{spud/admin/application.css → admin/application.css.scss} +14 -104
  8. data/app/assets/stylesheets/admin/login.css.scss +49 -0
  9. data/app/assets/stylesheets/admin/split_pane.css.scss +126 -0
  10. data/app/assets/stylesheets/admin/users.css.scss +9 -0
  11. data/app/controllers/{spud/admin → admin}/application_controller.rb +29 -30
  12. data/app/controllers/admin/dashboard_controller.rb +23 -0
  13. data/app/controllers/admin/password_resets_controller.rb +51 -0
  14. data/app/controllers/admin/roles_controller.rb +58 -0
  15. data/app/controllers/admin/settings_controller.rb +19 -0
  16. data/app/controllers/admin/setup_controller.rb +24 -0
  17. data/app/controllers/{spud/admin → admin}/user_sessions_controller.rb +8 -8
  18. data/app/controllers/admin/users_controller.rb +69 -0
  19. data/app/controllers/password_resets_controller.rb +52 -0
  20. data/app/controllers/sitemaps_controller.rb +8 -0
  21. data/app/controllers/spud/application_controller.rb +6 -20
  22. data/app/controllers/user_sessions_controller.rb +26 -0
  23. data/app/helpers/{spud/admin → admin}/application_helper.rb +1 -1
  24. data/app/helpers/admin/roles_helper.rb +2 -0
  25. data/app/helpers/spud/application_helper.rb +0 -7
  26. data/app/mailers/core_mailer.rb +9 -0
  27. data/app/models/spud_permission.rb +33 -0
  28. data/app/models/spud_role.rb +32 -0
  29. data/app/models/spud_role_permission.rb +9 -0
  30. data/app/models/spud_user.rb +79 -24
  31. data/app/models/spud_user_setting.rb +3 -3
  32. data/app/views/{spud/admin → admin}/dashboard/index.html.erb +1 -4
  33. data/app/views/admin/password_resets/index.html.erb +10 -0
  34. data/app/views/admin/password_resets/show.html.erb +15 -0
  35. data/app/views/admin/roles/_form.html.erb +33 -0
  36. data/app/views/admin/roles/edit.html.erb +2 -0
  37. data/app/views/admin/roles/index.html.erb +29 -0
  38. data/app/views/admin/roles/new.html.erb +2 -0
  39. data/app/views/{spud/admin → admin}/settings/edit.html.erb +6 -1
  40. data/app/views/admin/setup/new.html.erb +44 -0
  41. data/app/views/admin/user_sessions/new.html.erb +17 -0
  42. data/app/views/{spud/admin → admin}/users/_form.html.erb +20 -20
  43. data/app/views/admin/users/_index.html.erb +15 -0
  44. data/app/views/admin/users/edit.html.erb +3 -0
  45. data/app/views/admin/users/index.html.erb +34 -0
  46. data/app/views/admin/users/new.html.erb +3 -0
  47. data/app/views/admin/users/show.html.erb +28 -0
  48. data/app/views/layouts/admin/application.html.erb +68 -0
  49. data/app/views/layouts/{spud/admin → admin}/detail.html.erb +2 -2
  50. data/app/views/layouts/admin/login.html.erb +27 -0
  51. data/app/views/password_resets/index.html.erb +11 -0
  52. data/app/views/password_resets/show.html.erb +26 -0
  53. data/app/views/user_sessions/new.html.erb +25 -0
  54. data/config/routes.rb +22 -15
  55. data/db/migrate/20130620143010_create_spud_roles.rb +10 -0
  56. data/db/migrate/20130620143941_create_spud_permissions.rb +10 -0
  57. data/db/migrate/20130620151132_create_spud_role_permissions.rb +11 -0
  58. data/db/migrate/20130620163144_drop_spud_admin_permissions.rb +15 -0
  59. data/db/seeds.rb +3 -0
  60. data/lib/spud_core/belongs_to_app.rb +35 -48
  61. data/lib/spud_core/configuration.rb +5 -10
  62. data/lib/spud_core/engine.rb +31 -6
  63. data/lib/spud_core/exceptions.rb +7 -0
  64. data/lib/spud_core/searchable.rb +9 -9
  65. data/lib/spud_core/version.rb +3 -3
  66. data/spec/controllers/{spud/admin → admin}/application_controller_spec.rb +10 -6
  67. data/spec/controllers/{spud/admin → admin}/dashboard_controller_spec.rb +17 -29
  68. data/spec/controllers/{spud/admin → admin}/password_reset_controller_spec.rb +5 -5
  69. data/spec/controllers/admin/settings_controller_spec.rb +30 -0
  70. data/spec/controllers/admin/setup_controller_spec.rb +39 -0
  71. data/spec/controllers/admin/user_sessions_controller_spec.rb +52 -0
  72. data/spec/controllers/{spud/admin → admin}/users_controller_spec.rb +19 -35
  73. data/spec/controllers/{spud/sitemap_controllers_spec.rb → sitemap_controllers_spec.rb} +1 -1
  74. data/spec/dummy/config/database.yml +2 -2
  75. data/spec/dummy/db/schema.rb +23 -5
  76. data/spec/dummy/log/test.log +36118 -0
  77. data/spec/helpers/spud/admin/application_helper_spec.rb +1 -1
  78. data/spec/models/spud_role_spec.rb +46 -0
  79. data/spec/models/spud_user_spec.rb +0 -1
  80. metadata +101 -97
  81. data/README.markdown +0 -60
  82. data/app/assets/images/back_disabled.jpg +0 -0
  83. data/app/assets/images/back_enabled.jpg +0 -0
  84. data/app/assets/images/favicon.ico +0 -0
  85. data/app/assets/images/forward_disabled.jpg +0 -0
  86. data/app/assets/images/forward_enabled.jpg +0 -0
  87. data/app/assets/images/sort_asc.png +0 -0
  88. data/app/assets/images/sort_asc_disabled.png +0 -0
  89. data/app/assets/images/sort_both.png +0 -0
  90. data/app/assets/images/sort_desc.png +0 -0
  91. data/app/assets/images/sort_desc_disabled.png +0 -0
  92. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  93. data/app/assets/images/spud/admin/flick/ui-bg_flat_0_eeeeee_40x100.png +0 -0
  94. data/app/assets/images/spud/admin/flick/ui-bg_flat_55_ffffff_40x100.png +0 -0
  95. data/app/assets/images/spud/admin/flick/ui-bg_flat_75_ffffff_40x100.png +0 -0
  96. data/app/assets/images/spud/admin/flick/ui-bg_glass_65_ffffff_1x400.png +0 -0
  97. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_100_f6f6f6_1x100.png +0 -0
  98. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_25_0073ea_1x100.png +0 -0
  99. data/app/assets/images/spud/admin/flick/ui-bg_highlight-soft_50_dddddd_1x100.png +0 -0
  100. data/app/assets/images/spud/admin/flick/ui-icons_0073ea_256x240.png +0 -0
  101. data/app/assets/images/spud/admin/flick/ui-icons_454545_256x240.png +0 -0
  102. data/app/assets/images/spud/admin/flick/ui-icons_666666_256x240.png +0 -0
  103. data/app/assets/images/spud/admin/flick/ui-icons_ff0084_256x240.png +0 -0
  104. data/app/assets/images/spud/admin/flick/ui-icons_ffffff_256x240.png +0 -0
  105. data/app/assets/images/spud/admin/spud_logo.png +0 -0
  106. data/app/assets/images/spud/admin/spud_logo@2x.png +0 -0
  107. data/app/assets/javascripts/spud/admin/dashboard.js +0 -80
  108. data/app/assets/javascripts/spud/admin/jquery.dataTables.min.js +0 -151
  109. data/app/assets/stylesheets/spud/forms.css +0 -108
  110. data/app/assets/stylesheets/spud/login/application.css +0 -302
  111. data/app/assets/stylesheets/spud/login.css +0 -58
  112. data/app/assets/stylesheets/spud/setup.css +0 -4
  113. data/app/assets/stylesheets/spud/sitemaps.css +0 -4
  114. data/app/assets/stylesheets/spud/user_sessions.css +0 -4
  115. data/app/assets/stylesheets/spud/users.css +0 -4
  116. data/app/controllers/spud/admin/dashboard_controller.rb +0 -34
  117. data/app/controllers/spud/admin/password_resets_controller.rb +0 -52
  118. data/app/controllers/spud/admin/settings_controller.rb +0 -27
  119. data/app/controllers/spud/admin/users_controller.rb +0 -109
  120. data/app/controllers/spud/setup_controller.rb +0 -21
  121. data/app/controllers/spud/sitemaps_controller.rb +0 -8
  122. data/app/helpers/spud/password_resets_helper.rb +0 -2
  123. data/app/mailers/spud/core_mailer.rb +0 -12
  124. data/app/models/spud_admin_permission.rb +0 -5
  125. data/app/views/layouts/spud/admin/application.html.erb +0 -73
  126. data/app/views/layouts/spud/login/application.html.erb +0 -17
  127. data/app/views/layouts/spud/setup.html.erb +0 -47
  128. data/app/views/spud/admin/password_resets/index.html.erb +0 -14
  129. data/app/views/spud/admin/password_resets/show.html.erb +0 -25
  130. data/app/views/spud/admin/user_sessions/new.html.erb +0 -27
  131. data/app/views/spud/admin/users/_edit.html.erb +0 -14
  132. data/app/views/spud/admin/users/_new.html.erb +0 -15
  133. data/app/views/spud/admin/users/edit.html.erb +0 -3
  134. data/app/views/spud/admin/users/index.html.erb +0 -42
  135. data/app/views/spud/admin/users/new.html.erb +0 -3
  136. data/app/views/spud/admin/users/show.html.erb +0 -12
  137. data/app/views/spud/setup/index.html.erb +0 -43
  138. data/spec/controllers/spud/admin/settings_controller_spec.rb +0 -55
  139. data/spec/controllers/spud/admin/user_sessions_controller_spec.rb +0 -51
  140. data/spec/controllers/spud/setup_controller_spec.rb +0 -56
  141. /data/app/assets/images/{spud/admin → admin}/down_arrow.gif +0 -0
  142. /data/app/assets/images/{spud/admin → admin}/up_arrow.gif +0 -0
  143. /data/app/assets/images/{spud/admin → admin}/users_thumb.png +0 -0
  144. /data/app/assets/javascripts/{spud/admin → admin}/date_picker.js +0 -0
  145. /data/app/assets/javascripts/{spud/admin → admin}/editor.js +0 -0
  146. /data/app/assets/javascripts/{spud/admin → admin}/preinit.js +0 -0
  147. /data/app/assets/javascripts/{spud/password_resets.js → admin/roles.js} +0 -0
  148. /data/app/assets/stylesheets/{spud/admin → admin}/jquery-ui.css +0 -0
  149. /data/app/assets/stylesheets/{spud/password_resets.css → admin/roles.css} +0 -0
  150. /data/app/views/{spud/admin → admin}/settings/_form.html.erb +0 -0
  151. /data/app/views/{spud/core_mailer → core_mailer}/forgot_password_notification.html.erb +0 -0
  152. /data/app/views/{spud/core_mailer → core_mailer}/forgot_password_notification.text.erb +0 -0
  153. /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 Spud::Admin::UsersController do
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
- u.spud_admin_permissions << FactoryGirl.build(:spud_admin_permission, :name => "Users", :access => true)
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 permission and redirect to root_url if the user has no permissions" do
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.spud_admin_permissions << []
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 without permission and redirect to root_url if the users has no other admin modules" do
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.spud_admin_permissions << [
51
- FactoryGirl.build(:spud_admin_permission, :name => "Users", :access => false)
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
- u.spud_admin_permissions << [
62
- FactoryGirl.build(:spud_admin_permission, :name => "Users", :access => false),
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(spud_admin_root_url)
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), :format => :js
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(spud_admin_users_url)
157
+ response.should redirect_to(admin_user_path(user))
174
158
  end
175
159
  end
176
160
 
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Spud::SitemapsController do
3
+ describe SitemapsController do
4
4
  describe :show do
5
5
  it "should return the sitemap urls" do
6
6
  Spud::Core.sitemap_urls = [
@@ -5,11 +5,11 @@
5
5
  # gem 'sqlite3'
6
6
  development:
7
7
  adapter: mysql2
8
- database: spud_core_development
8
+ database: tb_core_development
9
9
  username: root
10
10
 
11
11
  test:
12
12
  adapter: mysql2
13
- database: spud_core_test
13
+ database: tb_core_test
14
14
  username: root
15
15
 
@@ -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 => 20120329174000) do
14
+ ActiveRecord::Schema.define(:version => 20130620163144) do
15
15
 
16
- create_table "spud_admin_permissions", :force => true do |t|
17
- t.integer "user_id"
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