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,126 @@
1
+ // Split Pane View
2
+ .split-pane{
3
+ border: 1px solid #eee;
4
+ overflow: hidden;
5
+ height: 640px;
6
+ margin: 0 0 20px;
7
+ }
8
+
9
+ // Left Side
10
+ .split-pane-left{
11
+ float: left;
12
+ width: 300px;
13
+ height: 600px;
14
+ position: relative;
15
+ }
16
+ .split-pane-left-content{
17
+ height: 560px;
18
+ overflow-y: scroll;
19
+ overflow-x: hidden;
20
+ }
21
+ .split-pane-left-content-empty{
22
+ padding: 10px;
23
+ margin: 0;
24
+ font-style: italic;
25
+ }
26
+ .split-pane-left-pagination{
27
+ margin: 0;
28
+ position: absolute;
29
+ bottom: 0;
30
+ left: 0;
31
+ height: 20px;
32
+ padding: 10px 0;
33
+ width: 100%;
34
+ border-top: 1px solid #eee;
35
+ background: #4C4C4C;
36
+ -webkit-touch-callout: none;
37
+ -webkit-user-select: none;
38
+ -khtml-user-select: none;
39
+ -moz-user-select: none;
40
+ -ms-user-select: none;
41
+ user-select: none;
42
+ .pagination{
43
+ text-align: center;
44
+ margin: 0;
45
+ color: white;
46
+ }
47
+ a{
48
+ color: white;
49
+ }
50
+ }
51
+
52
+ // Items
53
+ .split-pane-item{
54
+ cursor: pointer;
55
+ border-bottom: 1px solid #eee;
56
+ :first-last{
57
+ border-bottom: 0;
58
+ }
59
+ padding: 10px;
60
+ -webkit-touch-callout: none;
61
+ -webkit-user-select: none;
62
+ -khtml-user-select: none;
63
+ -moz-user-select: none;
64
+ -ms-user-select: none;
65
+ user-select: none;
66
+ }
67
+ .split-pane-item-title{
68
+ display: block;
69
+ font-weight: bold;
70
+ font-size: 14px;
71
+ line-height: 14px;
72
+ }
73
+ .split-pane-item-meta{
74
+ font-style: italic;
75
+ font-size: 12px;
76
+ line-height: 12px;
77
+ }
78
+ .split-pane-item:hover{
79
+ background: #FFEDDF;
80
+ }
81
+ .split-pane-item-selected{
82
+ background: #f1f1f1;
83
+ }
84
+
85
+ // Toolbars
86
+ .split-pane-toolbar{
87
+ height: 30px;
88
+ padding: 5px 10px;
89
+ background: #4C4C4C;
90
+ }
91
+ .split-pane-toolbar-left{
92
+ float: left;
93
+ max-width: 290px;
94
+ }
95
+ .split-pane-toolbar-right{
96
+ margin-left: 305px;
97
+ }
98
+ .split-pane-toolbar-title{
99
+ color: white;
100
+ font: bold 18px/30px sans-serif;
101
+ }
102
+ .split-pane-search-form{
103
+ margin: 0;
104
+ display: inline;
105
+ input{
106
+ margin: 0;
107
+ }
108
+ }
109
+
110
+ // Right Side
111
+ .split-pane-right{
112
+ margin-left: 300px;
113
+ padding: 15px;
114
+ border-left: 1px solid #eee;
115
+ height: 570px;
116
+ overflow-y: scroll;
117
+ }
118
+ .split-pane-right h2{
119
+ margin-top: 0;
120
+ line-height: 1em;
121
+ }
122
+ .split-pane-right{
123
+ form, .form-actions{
124
+ margin-bottom: 0;
125
+ }
126
+ }
@@ -0,0 +1,9 @@
1
+ // User Show
2
+ .admin-user-show{
3
+ :first-child{
4
+ margin-top: 0;
5
+ }
6
+ }
7
+ .admin-user-show-controls{
8
+ float: right;
9
+ }
@@ -1,11 +1,15 @@
1
- class Spud::Admin::ApplicationController < Spud::ApplicationController
2
- before_filter :require_admin_user
3
- before_filter :verify_site_mode
4
- add_breadcrumb "Dashboard", :spud_admin_root_path
5
- layout 'spud/admin/application'
6
- respond_to :html,:json,:xml,:js
7
- helper_method :sort_column, :sort_direction
8
- unloadable
1
+ class Admin::ApplicationController < Spud::ApplicationController
2
+
3
+ before_filter :require_user
4
+ before_filter :verify_site_mode
5
+ add_breadcrumb "Dashboard", :admin_root_path
6
+ layout 'admin/detail'
7
+ respond_to :html, :json, :xml, :js
8
+ unloadable
9
+
10
+ rescue_from Spud::AccessDeniedError do |exception|
11
+ redirect_to admin_root_path, :flash => {:error => exception.message}
12
+ end
9
13
 
10
14
  def current_admin_site
11
15
  if(session[:admin_site] == nil)
@@ -13,37 +17,32 @@ class Spud::Admin::ApplicationController < Spud::ApplicationController
13
17
  else
14
18
  return session[:admin_site]
15
19
  end
16
-
17
20
  end
18
21
 
19
22
  private
20
23
 
21
- def sort_column
22
- params[:sort]
23
- end
24
-
25
- def sort_direction
26
- %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
24
+ def require_user
25
+ if current_user.blank?
26
+ flash[:notice] = "You must be logged in to access the requested page"
27
+ redirect_to admin_login_path
28
+ return false
29
+ elsif !current_user.has_admin_rights?
30
+ flash[:notice] = "You do not have permission to access the requested page"
31
+ redirect_to root_path
32
+ return false
33
+ else
34
+ return true
35
+ end
27
36
  end
28
37
 
29
- def require_admin_user
30
- return false if !require_user
31
- if !@current_user.super_admin && current_user_permissions.count == 0
32
- store_location
33
- flash[:error] = "User must be an administrator to view this area."
34
- redirect_to root_path
38
+ def verify_site_mode
39
+ if(session[:admin_site] == nil)
40
+ session[:admin_site] = 0
35
41
  end
36
- return true
37
- end
38
42
 
39
- def verify_site_mode
40
- if(session[:admin_site] == nil)
41
- session[:admin_site] = 0
42
- end
43
-
44
- end
43
+ end
45
44
 
46
- def multisite_caching
45
+ def multisite_caching
47
46
  if Spud::Core.multisite_mode_enabled
48
47
  @old_cache_directory = Rails.application.config.action_controller.page_cache_directory
49
48
  if(@old_cache_directory.blank?)
@@ -0,0 +1,23 @@
1
+ class Admin::DashboardController < Admin::ApplicationController
2
+
3
+ layout 'admin/application'
4
+
5
+ def index
6
+ @admin_applications = Spud::Core.admin_applications.select do |admin_application|
7
+ current_user.can_view_app?(admin_application)
8
+ end
9
+ end
10
+
11
+ def switch
12
+ if !params[:multisite_select].blank?
13
+ if Spud::Core.multisite_config.select{|p| p[:site_id].to_i == params[:multisite_select].to_i}.blank? == false
14
+ session[:admin_site] = params[:multisite_select].to_i
15
+ else
16
+ flash[:error] = "Site does not exist."
17
+ end
18
+ else
19
+ session[:admin_site] = 0
20
+ end
21
+ redirect_to(back_or_default(!request.referer.blank? ? request.referer : admin_root_path)) and return
22
+ end
23
+ end
@@ -0,0 +1,51 @@
1
+ class Admin::PasswordResetsController < Admin::ApplicationController
2
+
3
+ before_filter :load_user_using_perishable_token, :only => [:show, :update]
4
+ skip_before_filter :require_user
5
+ layout 'admin/login'
6
+
7
+ def index
8
+
9
+ end
10
+
11
+ def create
12
+ @user = SpudUser.find_by_email(params[:email])
13
+ if @user
14
+ CoreMailer.forgot_password_notification(@user, admin_password_reset_url(@user.perishable_token)).deliver
15
+ flash[:notice] = "Instructions to reset your password have been emailed to you. " +
16
+ "Please check your email."
17
+ redirect_to admin_login_path
18
+ else
19
+ flash.now[:error] = "No user was found with that email address"
20
+ render 'index'
21
+ end
22
+ end
23
+
24
+ def show
25
+
26
+ end
27
+
28
+ def update
29
+ @user.password = params[:spud_user][:password]
30
+ @user.password_confirmation = params[:spud_user][:password_confirmation]
31
+ if @user.save
32
+ flash[:notice] = "Password successfully updated"
33
+ redirect_to admin_login_path
34
+ else
35
+ render 'show'
36
+ end
37
+ end
38
+
39
+ private
40
+
41
+ def load_user_using_perishable_token
42
+ @user = SpudUser.find_using_perishable_token(params[:id])
43
+ unless @user
44
+ flash[:notice] = "We're sorry, but we could not locate your account. " +
45
+ "If you are having issues try copying and pasting the URL " +
46
+ "from your email into your browser or restarting the " +
47
+ "reset password process."
48
+ redirect_to admin_login_path
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,58 @@
1
+ class Admin::RolesController < Admin::ApplicationController
2
+
3
+ before_filter :get_record, :only => [:show, :edit, :update, :destroy]
4
+ respond_to :html, :json, :xml
5
+ belongs_to_spud_app :users
6
+ add_breadcrumb "Users", :admin_users_path
7
+ add_breadcrumb "Roles", :admin_roles_path
8
+
9
+ def index
10
+ @roles = SpudRole.all
11
+ respond_with @roles
12
+ end
13
+
14
+ def show
15
+ respond_with @role
16
+ end
17
+
18
+ def new
19
+ @role = SpudRole.new
20
+ respond_with @role
21
+ end
22
+
23
+ def create
24
+ @role = SpudRole.new(params[:spud_role])
25
+ flash[:notice] = 'SpudRole created successfully' if @role.save
26
+ respond_with @role, :location => admin_roles_path
27
+ end
28
+
29
+ def edit
30
+ respond_with @role
31
+ end
32
+
33
+ def update
34
+ params[:spud_role][:permission_tags] ||= []
35
+ if @role.update_attributes(params[:spud_role])
36
+ flash[:notice] = 'SpudRole updated successfully'
37
+ end
38
+ respond_with @role, :location => admin_roles_path
39
+ end
40
+
41
+ def destroy
42
+ flash[:notice] = 'SpudRole deleted successfully' if @role.destroy
43
+ respond_with @role, :location => admin_roles_path
44
+ end
45
+
46
+ private
47
+
48
+ def get_record
49
+ begin
50
+ @role = SpudRole.find(params[:id])
51
+ rescue ActiveRecord::RecordNotFound => e
52
+ flash[:error] = "Could not find the requested SpudRole"
53
+ redirect_to admin_roles_path
54
+ return false
55
+ end
56
+ end
57
+
58
+ end
@@ -0,0 +1,19 @@
1
+ class Admin::SettingsController < Admin::ApplicationController
2
+
3
+ add_breadcrumb "Dashboard", :admin_root_path
4
+ add_breadcrumb "Settings", :admin_settings_path
5
+
6
+ def edit
7
+
8
+ end
9
+
10
+ def update
11
+ if @current_user.update_attributes(params[:spud_user].slice :login,:first_name,:last_name,:email,:password,:password_confirmation,:time_zone)
12
+ flash[:notice] = "User settings saved successfully."
13
+ redirect_to admin_root_path
14
+ else
15
+ render 'edit'
16
+ end
17
+ end
18
+
19
+ end
@@ -0,0 +1,24 @@
1
+ class Admin::SetupController < Admin::ApplicationController
2
+
3
+ skip_before_filter :require_user
4
+
5
+ def new
6
+ if SpudUser.count != 0
7
+ flash[:error] = "Access Denied! This wizard may only be executed when the database is empty."
8
+ redirect_to admin_login_path and return
9
+ else
10
+ @spud_user = SpudUser.new
11
+ end
12
+ end
13
+
14
+ def create
15
+ @spud_user = SpudUser.new(params[:spud_user])
16
+ @spud_user.super_admin = true
17
+ if @spud_user.save
18
+ redirect_to admin_root_path
19
+ else
20
+ render 'new', :status => 422
21
+ end
22
+ end
23
+
24
+ end
@@ -1,14 +1,14 @@
1
- class Spud::Admin::UserSessionsController < Spud::ApplicationController
1
+ class Admin::UserSessionsController < Admin::ApplicationController
2
2
 
3
- before_filter :require_user, :only => :destroy
4
- layout 'spud/login/application'
3
+ skip_before_filter :require_user
4
+ layout 'admin/login'
5
5
 
6
6
  def new
7
7
  if current_user
8
- redirect_to spud_admin_root_path
8
+ redirect_to admin_root_path
9
9
  elsif SpudUser.all.count == 0
10
10
  logger.debug "NO USERS!"
11
- redirect_to spud_setup_url() and return
11
+ redirect_to admin_setup_path and return
12
12
  end
13
13
  @user_session = SpudUserSession.new
14
14
  end
@@ -17,7 +17,7 @@ class Spud::Admin::UserSessionsController < Spud::ApplicationController
17
17
  @user_session = SpudUserSession.new(params[:spud_user_session])
18
18
  if @user_session.save
19
19
  flash[:notice] = "Login successful!"
20
- redirect_to spud_admin_root_path
20
+ redirect_to admin_root_path
21
21
  else
22
22
  render :action => :new
23
23
  end
@@ -29,11 +29,11 @@ class Spud::Admin::UserSessionsController < Spud::ApplicationController
29
29
  if !request.referer.blank?
30
30
  session[:return_to] = request.referer
31
31
  end
32
- redirect_back_or_default spud_admin_login_path
32
+ redirect_to admin_login_path
33
33
  end
34
34
 
35
35
  def legacy_redirect
36
- redirect_to spud_admin_login_path
36
+ redirect_to admin_login_path
37
37
  end
38
38
 
39
39
  end
@@ -0,0 +1,69 @@
1
+ class Admin::UsersController < Admin::ApplicationController
2
+
3
+ layout false
4
+ belongs_to_spud_app :users
5
+ add_breadcrumb "Users", :admin_users_path
6
+ before_filter :load_user, :only => [:edit, :update, :show, :destroy]
7
+ respond_to :html
8
+
9
+ def index
10
+ @users = SpudUser.order('login asc')
11
+ if params[:search]
12
+ @users = @users.where_name_like(params[:search])
13
+ end
14
+ @users = @users.paginate(:page => params[:page])
15
+ respond_with @users do |format|
16
+ format.html{
17
+ if request.xhr?
18
+ render :partial => 'index'
19
+ else
20
+ render 'index', :layout => 'admin/detail'
21
+ end
22
+ }
23
+ end
24
+ end
25
+
26
+ def show
27
+ respond_with @user
28
+ end
29
+
30
+ def new
31
+ @user = SpudUser.new
32
+ respond_with @user
33
+ end
34
+
35
+ def create
36
+ @user = SpudUser.new(params[:spud_user], :as => :admin)
37
+ if @user.save
38
+ render 'show', :status => 200
39
+ else
40
+ render 'new', :status => 422
41
+ end
42
+ end
43
+
44
+ def edit
45
+ respond_with @user
46
+ end
47
+
48
+ def update
49
+ @user.update_attributes(params[:spud_user], :as => :admin)
50
+ respond_with @user, :location => admin_user_path(@user), :status => 200
51
+ end
52
+
53
+ def destroy
54
+ @user.destroy
55
+ respond_with @user, :location => admin_users_path
56
+ end
57
+
58
+ private
59
+
60
+ def load_user
61
+ @user = SpudUser.where(:id => params[:id]).first
62
+ if @user.blank?
63
+ flash[:error] = "User not found!"
64
+ redirect_to admin_users_path and return false
65
+ end
66
+ return true
67
+ end
68
+
69
+ end
@@ -0,0 +1,52 @@
1
+ class PasswordResetsController < ApplicationController
2
+
3
+ before_filter :load_user_using_perishable_token, :only => [:show, :update]
4
+ skip_before_filter :require_user
5
+ respond_to :html
6
+
7
+ def index
8
+
9
+ end
10
+
11
+ def create
12
+ @user = SpudUser.find_by_email(params[:email])
13
+ if @user
14
+ CoreMailer.forgot_password_notification(@user, password_reset_url(@user.perishable_token)).deliver
15
+ flash[:notice] = "Password reset instructions have been sent to your email"
16
+ redirect_to login_path
17
+ else
18
+ flash.now[:error] = "No user was found with that email address"
19
+ render 'index'
20
+ end
21
+ end
22
+
23
+ def show
24
+
25
+ end
26
+
27
+ def update
28
+ if params[:spud_user][:password].blank?
29
+ @user.errors.add(:password, 'must not be blank')
30
+ else
31
+ @user.password = params[:spud_user][:password]
32
+ @user.password_confirmation = params[:spud_user][:password_confirmation]
33
+ if @user.save()
34
+ flash[:notice] = "Password successfully updated"
35
+ redirect_back_or_default(root_path)
36
+ return
37
+ end
38
+ end
39
+ render 'show'
40
+ end
41
+
42
+ private
43
+
44
+ def load_user_using_perishable_token
45
+ @user = SpudUser.find_using_perishable_token(params[:id])
46
+ unless @user
47
+ flash[:error] = "Password reset token was invalid or expired"
48
+ redirect_to login_path
49
+ end
50
+ end
51
+
52
+ end
@@ -0,0 +1,8 @@
1
+ class SitemapsController < Spud::ApplicationController
2
+ respond_to :xml
3
+ caches_page :show,:expires_in => 1.day
4
+ def show
5
+ @sitemap_urls = Spud::Core.sitemap_urls
6
+ respond_with @sitemap_urls
7
+ end
8
+ end
@@ -1,9 +1,9 @@
1
1
  class Spud::ApplicationController < ActionController::Base
2
2
 
3
- unloadable
4
- protect_from_forgery
5
- helper_method :current_user_session, :current_user
6
- around_filter :set_time_zone
3
+ unloadable
4
+ protect_from_forgery
5
+ helper_method :current_user_session, :current_user
6
+ around_filter :set_time_zone
7
7
 
8
8
  if Spud::Core.multisite_mode_enabled
9
9
  before_filter :multisite_caching
@@ -27,30 +27,16 @@ private
27
27
  @current_user = current_user_session && current_user_session.spud_user
28
28
  end
29
29
 
30
- def current_user_permissions
31
- return @current_user_permissions if defined?(@current_user_permissions)
32
- @current_user_permissions = current_user.spud_admin_permissions.where(:access => true).all
33
- end
34
-
35
30
  def require_user
36
31
  unless current_user
37
32
  store_location
38
- flash[:notice] = "You must be logged in to access this page"
39
- redirect_to spud_admin_login_path
33
+ flash[:notice] = "You must be logged in to access the requested page"
34
+ redirect_to login_path
40
35
  return false
41
36
  end
42
37
  return true
43
38
  end
44
39
 
45
- def require_no_user
46
- if current_user
47
- store_location
48
- flash[:notice] = "You must be logged out to access this page"
49
- redirect_to root_path
50
- return false
51
- end
52
- end
53
-
54
40
  def store_location
55
41
  session[:return_to] = request.url
56
42
  end
@@ -0,0 +1,26 @@
1
+ class UserSessionsController < ApplicationController
2
+
3
+ skip_before_filter :require_user
4
+ respond_to :html
5
+
6
+ def new
7
+ @user_session = SpudUserSession.new
8
+ end
9
+
10
+ def create
11
+ @user_session = SpudUserSession.new(params[:spud_user_session])
12
+ if @user_session.save
13
+ flash[:notice] = "Login successful!"
14
+ redirect_back_or_default(root_path)
15
+ else
16
+ render 'new'
17
+ end
18
+ end
19
+
20
+ def destroy
21
+ current_user_session.destroy unless current_user_session.blank?
22
+ flash[:notice] = "Logout successful!"
23
+ redirect_to login_path
24
+ end
25
+
26
+ end
@@ -1,4 +1,4 @@
1
- module Spud::Admin::ApplicationHelper
1
+ module Admin::ApplicationHelper
2
2
 
3
3
  def timestamp(timedate=nil)
4
4
  return "Never" if timedate.blank?
@@ -0,0 +1,2 @@
1
+ module Admin::RolesHelper
2
+ end
@@ -12,11 +12,4 @@ module Spud::ApplicationHelper
12
12
  return config[:site_id] unless config.blank?
13
13
  end
14
14
 
15
- def sortable(column, title = nil)
16
- title ||= column.titleize
17
- css_class = column == sort_column ? "current #{sort_direction}" : nil
18
- direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
19
- link_to title, {:sort => column, :direction => direction}, {:class => css_class}
20
- end
21
-
22
15
  end
@@ -0,0 +1,9 @@
1
+ class CoreMailer < ActionMailer::Base
2
+
3
+ def forgot_password_notification(user, url)
4
+ @user = user
5
+ @url = url
6
+ mail(:from =>Spud::Core.from_address,:to => user.email, :subject => "Forgot Password Request from #{Spud::Core.config.site_name}")
7
+ end
8
+
9
+ end