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.
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