goldberg_generator 0.2.2

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 (186) hide show
  1. data/USAGE +34 -0
  2. data/goldberg_generator.rb +463 -0
  3. data/templates/README_GOLDBERG +22 -0
  4. data/templates/app/views/layouts/application.rhtml +80 -0
  5. data/templates/layouts/ewnf/README +8 -0
  6. data/templates/layouts/ewnf/app/views/layouts/application.rhtml +74 -0
  7. data/templates/layouts/ewnf/public/images/bg.gif +0 -0
  8. data/templates/layouts/ewnf/public/images/daddy_rightarrow.gif +0 -0
  9. data/templates/layouts/ewnf/public/images/sample.jpg +0 -0
  10. data/templates/layouts/ewnf/public/images/title_img.jpg +0 -0
  11. data/templates/layouts/ewnf/public/stylesheets/layout.css +223 -0
  12. data/templates/layouts/snooker/app/views/layouts/application.rhtml +74 -0
  13. data/templates/layouts/snooker/public/images/column_200.png +0 -0
  14. data/templates/layouts/snooker/public/images/daddy_rightarrow.gif +0 -0
  15. data/templates/layouts/snooker/public/images/footer_bg.png +0 -0
  16. data/templates/layouts/snooker/public/images/logo.jpg +0 -0
  17. data/templates/layouts/snooker/public/stylesheets/layout.css +183 -0
  18. data/templates/layouts/spoiled_brat/LICENSE.txt +211 -0
  19. data/templates/layouts/spoiled_brat/README +8 -0
  20. data/templates/layouts/spoiled_brat/app/views/layouts/application.rhtml +71 -0
  21. data/templates/layouts/spoiled_brat/public/images/blockquote-bg.gif +0 -0
  22. data/templates/layouts/spoiled_brat/public/images/body-bg.jpg +0 -0
  23. data/templates/layouts/spoiled_brat/public/images/centerColumn-bg.jpg +0 -0
  24. data/templates/layouts/spoiled_brat/public/images/daddy_leftarrow.gif +0 -0
  25. data/templates/layouts/spoiled_brat/public/images/h2-bg.gif +0 -0
  26. data/templates/layouts/spoiled_brat/public/images/h3-bg.gif +0 -0
  27. data/templates/layouts/spoiled_brat/public/images/header-bg.jpg +0 -0
  28. data/templates/layouts/spoiled_brat/public/images/hr-bg.jpg +0 -0
  29. data/templates/layouts/spoiled_brat/public/images/logo.jpg +0 -0
  30. data/templates/layouts/spoiled_brat/public/stylesheets/layout.css +379 -0
  31. data/templates/public/goldberg/images/action.png +0 -0
  32. data/templates/public/goldberg/images/add.png +0 -0
  33. data/templates/public/goldberg/images/bodybg.jpg +0 -0
  34. data/templates/public/goldberg/images/delete.png +0 -0
  35. data/templates/public/goldberg/images/down.png +0 -0
  36. data/templates/public/goldberg/images/footerbg.jpg +0 -0
  37. data/templates/public/goldberg/images/logo_right.jpg +0 -0
  38. data/templates/public/goldberg/images/menuhover.jpg +0 -0
  39. data/templates/public/goldberg/images/page.png +0 -0
  40. data/templates/public/goldberg/images/permission.png +0 -0
  41. data/templates/public/goldberg/images/role.png +0 -0
  42. data/templates/public/goldberg/images/up.png +0 -0
  43. data/templates/public/goldberg/javascripts/suckerfish.js +12 -0
  44. data/templates/public/goldberg/stylesheets/goldberg.css +142 -0
  45. data/templates/public/goldberg/stylesheets/layout.css +321 -0
  46. data/templates/public/goldberg/stylesheets/suckerfish.css +124 -0
  47. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/auth_controller.rb +104 -0
  48. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/content_pages_controller.rb +197 -0
  49. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/controller_actions_controller.rb +134 -0
  50. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/menu_items_controller.rb +184 -0
  51. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/permissions_controller.rb +60 -0
  52. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_controller.rb +85 -0
  53. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/roles_permissions_controller.rb +65 -0
  54. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/site_controllers_controller.rb +157 -0
  55. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/system_settings_controller.rb +75 -0
  56. data/templates/vendor/plugins/goldberg/app/controllers/goldberg/users_controller.rb +293 -0
  57. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/auth_helper.rb +4 -0
  58. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/content_pages_helper.rb +23 -0
  59. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/controller_actions_helper.rb +5 -0
  60. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/menu_items_helper.rb +4 -0
  61. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/permissions_helper.rb +4 -0
  62. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_helper.rb +4 -0
  63. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/roles_permissions_helper.rb +4 -0
  64. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/site_controllers_helper.rb +4 -0
  65. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/system_settings_helper.rb +4 -0
  66. data/templates/vendor/plugins/goldberg/app/helpers/goldberg/users_helper.rb +4 -0
  67. data/templates/vendor/plugins/goldberg/app/models/goldberg/content_page.rb +134 -0
  68. data/templates/vendor/plugins/goldberg/app/models/goldberg/controller_action.rb +86 -0
  69. data/templates/vendor/plugins/goldberg/app/models/goldberg/credentials.rb +128 -0
  70. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu.rb +198 -0
  71. data/templates/vendor/plugins/goldberg/app/models/goldberg/menu_item.rb +127 -0
  72. data/templates/vendor/plugins/goldberg/app/models/goldberg/permission.rb +37 -0
  73. data/templates/vendor/plugins/goldberg/app/models/goldberg/role.rb +68 -0
  74. data/templates/vendor/plugins/goldberg/app/models/goldberg/roles_permission.rb +18 -0
  75. data/templates/vendor/plugins/goldberg/app/models/goldberg/site_controller.rb +59 -0
  76. data/templates/vendor/plugins/goldberg/app/models/goldberg/system_settings.rb +112 -0
  77. data/templates/vendor/plugins/goldberg/app/models/goldberg/user.rb +69 -0
  78. data/templates/vendor/plugins/goldberg/app/models/goldberg/user_mailer.rb +43 -0
  79. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/_login.rhtml +15 -0
  80. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/login.rhtml +22 -0
  81. data/templates/vendor/plugins/goldberg/app/views/goldberg/auth/logout.rhtml +2 -0
  82. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_create_folder.rxml +6 -0
  83. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_fck_files.rxml +19 -0
  84. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/_form.rhtml +32 -0
  85. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/edit.rhtml +10 -0
  86. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/fck_speller_pages.rhtml +58 -0
  87. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/list.rhtml +22 -0
  88. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/new.rhtml +8 -0
  89. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/show.rhtml +57 -0
  90. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view.rhtml +1 -0
  91. data/templates/vendor/plugins/goldberg/app/views/goldberg/content_pages/view_default.rhtml +1 -0
  92. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/_form.rhtml +53 -0
  93. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/edit.rhtml +9 -0
  94. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/list.rhtml +27 -0
  95. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/new.rhtml +10 -0
  96. data/templates/vendor/plugins/goldberg/app/views/goldberg/controller_actions/show.rhtml +13 -0
  97. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_js.rhtml +52 -0
  98. data/templates/vendor/plugins/goldberg/app/views/goldberg/layouts/_tabpanel_list.rhtml +7 -0
  99. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_breadcrumbs.rhtml +5 -0
  100. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_form.rhtml +42 -0
  101. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_list.rhtml +52 -0
  102. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_item_parent_list.rhtml +15 -0
  103. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_menubar.rhtml +21 -0
  104. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/_suckerfish.rhtml +14 -0
  105. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/edit.rhtml +10 -0
  106. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list-original.rhtml +27 -0
  107. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/list.rhtml +16 -0
  108. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/new.rhtml +9 -0
  109. data/templates/vendor/plugins/goldberg/app/views/goldberg/menu_items/show.rhtml +8 -0
  110. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/_form.rhtml +7 -0
  111. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/edit.rhtml +9 -0
  112. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/list.rhtml +14 -0
  113. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/new.rhtml +8 -0
  114. data/templates/vendor/plugins/goldberg/app/views/goldberg/permissions/show.rhtml +38 -0
  115. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/_form.rhtml +18 -0
  116. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/edit.rhtml +9 -0
  117. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/list.rhtml +21 -0
  118. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/new.rhtml +8 -0
  119. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles/show.rhtml +79 -0
  120. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/_form.rhtml +13 -0
  121. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/edit.rhtml +9 -0
  122. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/list.rhtml +24 -0
  123. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new.rhtml +8 -0
  124. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/new_permission_for_role.rhtml +8 -0
  125. data/templates/vendor/plugins/goldberg/app/views/goldberg/roles_permissions/show.rhtml +8 -0
  126. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_form.rhtml +15 -0
  127. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/_list.rhtml +26 -0
  128. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/edit.rhtml +9 -0
  129. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/list.rhtml +107 -0
  130. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/new.rhtml +8 -0
  131. data/templates/vendor/plugins/goldberg/app/views/goldberg/site_controllers/show.rhtml +38 -0
  132. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/_form.rhtml +71 -0
  133. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/edit.rhtml +9 -0
  134. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/list.rhtml +27 -0
  135. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/new.rhtml +8 -0
  136. data/templates/vendor/plugins/goldberg/app/views/goldberg/system_settings/show.rhtml +189 -0
  137. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/confirmation_request.rhtml +19 -0
  138. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password.rhtml +17 -0
  139. data/templates/vendor/plugins/goldberg/app/views/goldberg/user_mailer/reset_password_request.rhtml +23 -0
  140. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/_form.rhtml +53 -0
  141. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration.rhtml +26 -0
  142. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/confirm_registration_submit.rhtml +4 -0
  143. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/create.rhtml +19 -0
  144. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/edit.rhtml +11 -0
  145. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password.rhtml +27 -0
  146. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/forgot_password_submit.rhtml +4 -0
  147. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/list.rhtml +18 -0
  148. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/new.rhtml +19 -0
  149. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password.rhtml +11 -0
  150. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/reset_password_submit.rhtml +3 -0
  151. data/templates/vendor/plugins/goldberg/app/views/goldberg/users/show.rhtml +33 -0
  152. data/templates/vendor/plugins/goldberg/db/ContentPage.yml +466 -0
  153. data/templates/vendor/plugins/goldberg/db/ControllerAction.yml +162 -0
  154. data/templates/vendor/plugins/goldberg/db/MenuItem.yml +109 -0
  155. data/templates/vendor/plugins/goldberg/db/Permission.yml +21 -0
  156. data/templates/vendor/plugins/goldberg/db/Role.yml +493 -0
  157. data/templates/vendor/plugins/goldberg/db/RolesPermission.yml +26 -0
  158. data/templates/vendor/plugins/goldberg/db/SiteController.yml +61 -0
  159. data/templates/vendor/plugins/goldberg/db/SystemSettings.yml +21 -0
  160. data/templates/vendor/plugins/goldberg/db/User.yml +15 -0
  161. data/templates/vendor/plugins/goldberg/db/migrate/001_initial_setup.rb +128 -0
  162. data/templates/vendor/plugins/goldberg/db/migrate/002_menu_rest_items_users_cached_content_pages.rb +26 -0
  163. data/templates/vendor/plugins/goldberg/db/migrate/003_self_registration.rb +54 -0
  164. data/templates/vendor/plugins/goldberg/db/migrate/004_column_fixes.rb +119 -0
  165. data/templates/vendor/plugins/goldberg/init.rb +13 -0
  166. data/templates/vendor/plugins/goldberg/lib/goldberg.rb +37 -0
  167. data/templates/vendor/plugins/goldberg/lib/goldberg/controller.rb +11 -0
  168. data/templates/vendor/plugins/goldberg/lib/goldberg/filters.rb +197 -0
  169. data/templates/vendor/plugins/goldberg/lib/goldberg/helper.rb +66 -0
  170. data/templates/vendor/plugins/goldberg/lib/goldberg/migration.rb +113 -0
  171. data/templates/vendor/plugins/goldberg/lib/goldberg/migrator.rb +128 -0
  172. data/templates/vendor/plugins/goldberg/lib/goldberg/model.rb +110 -0
  173. data/templates/vendor/plugins/goldberg/lib/goldberg/routes.rb +49 -0
  174. data/templates/vendor/plugins/goldberg/lib/goldberg/test_helper.rb +82 -0
  175. data/templates/vendor/plugins/goldberg/tasks/goldberg_tasks.rake +47 -0
  176. data/templates/vendor/plugins/goldberg/test/functional/content_pages_controller_test.rb +31 -0
  177. data/templates/vendor/plugins/goldberg/test/integration/security_test.rb +134 -0
  178. data/templates/vendor/plugins/goldberg/test/test_helper.rb +40 -0
  179. data/templates/vendor/plugins/goldberg/test/unit/content_page_test.rb +87 -0
  180. data/templates/vendor/plugins/goldberg/test/unit/controller_action_test.rb +85 -0
  181. data/templates/vendor/plugins/goldberg/test/unit/menu_item_test.rb +46 -0
  182. data/templates/vendor/plugins/goldberg/test/unit/permission_test.rb +35 -0
  183. data/templates/vendor/plugins/goldberg/test/unit/site_controller_test.rb +53 -0
  184. data/templates/vendor/plugins/goldberg/test/unit/system_settings_test.rb +71 -0
  185. data/templates/vendor/plugins/goldberg/test/unit/user_test.rb +104 -0
  186. metadata +310 -0
@@ -0,0 +1,60 @@
1
+ module Goldberg
2
+ class PermissionsController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+ def index
10
+ list
11
+ render :action => 'list'
12
+ end
13
+
14
+ def list
15
+ @permissions = Permission.find(:all, :order => 'name')
16
+ end
17
+
18
+ def show
19
+ @permission = Permission.find(params[:id])
20
+ @pages = ContentPage.find_for_permission(params[:id])
21
+ @actions = ControllerAction.find_for_permission(params[:id])
22
+ end
23
+
24
+ def new
25
+ @permission = Permission.new
26
+ end
27
+
28
+ def create
29
+ @permission = Permission.new(params[:permission])
30
+ if @permission.save
31
+ flash[:notice] = 'Permission was successfully created.'
32
+ Role.rebuild_cache
33
+ redirect_to :action => 'list'
34
+ else
35
+ render :action => 'new'
36
+ end
37
+ end
38
+
39
+ def edit
40
+ @permission = Permission.find(params[:id])
41
+ end
42
+
43
+ def update
44
+ @permission = Permission.find(params[:id])
45
+ if @permission.update_attributes(params[:permission])
46
+ flash[:notice] = 'Permission was successfully updated.'
47
+ Role.rebuild_cache
48
+ redirect_to :action => 'show', :id => @permission
49
+ else
50
+ render :action => 'edit'
51
+ end
52
+ end
53
+
54
+ def destroy
55
+ Permission.find(params[:id]).destroy
56
+ Role.rebuild_cache
57
+ redirect_to :action => 'list'
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,85 @@
1
+ module Goldberg
2
+ class RolesController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+ def index
10
+ list
11
+ render :action => 'list'
12
+ end
13
+
14
+ def list
15
+ @roles = Role.find(:all,
16
+ :order => 'name')
17
+ end
18
+
19
+ def show
20
+ @role = Role.find(params[:id])
21
+ @rps = RolesPermission.find_for_role(@role.id)
22
+ @roles = @role.get_parents
23
+ foreign
24
+ end
25
+
26
+ def new
27
+ @role = Role.new
28
+ foreign()
29
+ end
30
+
31
+ def create
32
+ @role = Role.new(params[:role])
33
+ if @role.save
34
+ Role.rebuild_cache
35
+ flash[:notice] = 'Role was successfully created.'
36
+ redirect_to :action => 'list'
37
+ else
38
+ foreign
39
+ render :action => 'new'
40
+ end
41
+ end
42
+
43
+ def edit
44
+ @role = Role.find(params[:id])
45
+ foreign
46
+ end
47
+
48
+ def update
49
+ @role = Role.find(params[:id])
50
+ if @role.update_attributes(params[:role])
51
+ Role.rebuild_cache
52
+ @role = Role.find(params[:id])
53
+ flash[:notice] = 'Role was successfully updated.'
54
+ redirect_to :action => 'show', :id => @role.id
55
+ else
56
+ foreign
57
+ render :action => 'edit'
58
+ end
59
+ end
60
+
61
+ def destroy
62
+ Role.find(params[:id]).destroy
63
+ redirect_to :action => 'list'
64
+ end
65
+
66
+ protected
67
+
68
+ def foreign
69
+ if @role.id
70
+ @other_roles = Role.find(:all,
71
+ :conditions => ['id not in (?)', @role.id],
72
+ :order => 'name')
73
+ else
74
+ @other_roles = Role.find(:all,
75
+ :order => 'name')
76
+ end
77
+ @other_roles ||= Array.new
78
+ @other_roles.unshift Role.new(:id => nil, :name => '(none)')
79
+ @users = User.find(:all,
80
+ :conditions => ['role_id = ?', @role.id],
81
+ :order => 'name')
82
+ end
83
+
84
+ end
85
+ end
@@ -0,0 +1,65 @@
1
+ module Goldberg
2
+ class RolesPermissionsController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+ def index
10
+ list
11
+ render :action => 'list'
12
+ end
13
+
14
+ def list
15
+ @roles_permissions = RolesPermission.find(:all)
16
+ end
17
+
18
+ def show
19
+ @roles_permission = RolesPermission.find(params[:id])
20
+ end
21
+
22
+ def new
23
+ @roles_permission = RolesPermission.new
24
+ end
25
+
26
+ def new_permission_for_role
27
+ @roles_permission = RolesPermission.new
28
+ @roles_permission.role_id = params[:id]
29
+ @role = Role.find(params[:id])
30
+ @permissions = Permission.find_not_for_role(params[:id])
31
+ end
32
+
33
+ def create
34
+ @roles_permission = RolesPermission.new(params[:roles_permission])
35
+ if @roles_permission.save
36
+ flash[:notice] = 'RolesPermission was successfully created.'
37
+ redirect_to :controller => 'roles', :action => 'show',
38
+ :id => @roles_permission.role_id
39
+ else
40
+ render :action => 'new'
41
+ end
42
+ end
43
+
44
+ def edit
45
+ @roles_permission = RolesPermission.find(params[:id])
46
+ end
47
+
48
+ def update
49
+ @roles_permission = RolesPermission.find(params[:id])
50
+ if @roles_permission.update_attributes(params[:roles_permission])
51
+ flash[:notice] = 'RolesPermission was successfully updated.'
52
+ redirect_to :action => 'show', :id => @roles_permission
53
+ else
54
+ render :action => 'edit'
55
+ end
56
+ end
57
+
58
+ def destroy
59
+ rp = RolesPermission.find(params[:id])
60
+ role = rp.role_id
61
+ rp.destroy
62
+ redirect_to :controller => 'roles', :action => 'show', :id => role
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,157 @@
1
+ module Goldberg
2
+ class SiteControllersController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
6
+ verify :method => :post, :only => [ :destroy, :create, :update ],
7
+ :redirect_to => { :action => :list }
8
+
9
+ def index
10
+ list
11
+ render :action => 'list'
12
+ end
13
+
14
+ def list
15
+ @builtin_site_controllers = SiteController.find(:all,
16
+ :conditions => "builtin = 1",
17
+ :order => 'name')
18
+ @app_site_controllers =
19
+ SiteController.find(:all,
20
+ :conditions => "builtin is null or builtin = 0",
21
+ :order => 'name')
22
+ classify_controllers
23
+ end
24
+
25
+ def show
26
+ @site_controller = SiteController.find(params[:id])
27
+ @actions = ControllerAction.find(:all,
28
+ :conditions => ['site_controller_id = ?',
29
+ params[:id] ],
30
+ :order => 'name')
31
+ end
32
+
33
+ def new
34
+ foreign
35
+ @site_controller = SiteController.new
36
+ end
37
+
38
+ def new_called
39
+ foreign
40
+ @site_controller = SiteController.new(:name => params[:id].gsub(/\%2F/, '/'))
41
+ render :action => 'new'
42
+ end
43
+
44
+ def create
45
+ @site_controller = SiteController.new(params[:site_controller])
46
+ if @site_controller.save
47
+ flash[:notice] = 'SiteController was successfully created.'
48
+ Role.rebuild_cache
49
+ redirect_to :action => 'list'
50
+ else
51
+ foreign
52
+ render :action => 'new'
53
+ end
54
+ end
55
+
56
+ def edit
57
+ @site_controller = SiteController.find(params[:id])
58
+ foreign
59
+ end
60
+
61
+ def update
62
+ @site_controller = SiteController.find(params[:id])
63
+ if @site_controller.update_attributes(params[:site_controller])
64
+ flash[:notice] = 'SiteController was successfully updated.'
65
+ Role.rebuild_cache
66
+ redirect_to :action => 'show', :id => @site_controller
67
+ else
68
+ foreign
69
+ render :action => 'edit'
70
+ end
71
+ end
72
+
73
+ def destroy
74
+ SiteController.find(params[:id]).destroy
75
+ Role.rebuild_cache
76
+ redirect_to :action => 'list'
77
+ end
78
+
79
+
80
+ protected
81
+
82
+
83
+ def foreign
84
+ @permissions = Permission.find(:all, :order => 'name')
85
+ end
86
+
87
+
88
+
89
+ # @unknown contains ApplicationController class objects hashed by
90
+ # name, while @app, @builtin and @missing are arrays of
91
+ # SiteController ActiveRecord objects.
92
+
93
+ def classify_controllers
94
+ from_classes = SiteController.classes
95
+
96
+ from_db = SiteController.find(:all,
97
+ :order => 'name')
98
+ known = Hash.new
99
+ @missing = Array.new
100
+ for dbc in from_db do
101
+ if from_classes.has_key? dbc.name
102
+ known[dbc.name] = dbc
103
+ else
104
+ @missing << dbc
105
+ end
106
+ end
107
+
108
+ @unknown = Hash.new
109
+ @app = Array.new
110
+ @builtin = Array.new
111
+
112
+ for name in from_classes.keys.sort do
113
+ if known.has_key? name
114
+ if known[name].builtin == 1
115
+ @builtin << known[name]
116
+ else
117
+ @app << known[name]
118
+ end
119
+ else
120
+ @unknown[name] = from_classes[name]
121
+ end
122
+ end
123
+
124
+ @has_missing = (@missing.length > 0) ? true : false
125
+ @has_unknown = (@unknown.keys.length > 0) ? true : false
126
+ @has_app = (@app.length > 0) ? true : false
127
+ @has_builtin = (@builtin.length > 0) ? true : false
128
+
129
+ return
130
+ end
131
+
132
+
133
+ # Given a controller name, returns an array of available actions to
134
+ # which that controller will respond.
135
+
136
+ def controller_actions(controller_name)
137
+
138
+ controllers = controller_classes()
139
+ actions = Hash.new()
140
+
141
+ if @controller_classes.has_key? controller_name
142
+ controller = @controller_classes[controller_name]
143
+
144
+ for method in controller.public_instance_methods do
145
+ actions[method] = true
146
+ end
147
+
148
+ for hidden in controller.hidden_actions do
149
+ actions.delete hidden
150
+ end
151
+ end
152
+
153
+ return actions.keys
154
+ end # def controller_actions
155
+
156
+ end # class
157
+ end
@@ -0,0 +1,75 @@
1
+ module Goldberg
2
+ class SystemSettingsController < ApplicationController
3
+ include Goldberg::Controller
4
+
5
+ def index
6
+ list
7
+ render :action => 'list'
8
+ end
9
+
10
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
11
+ verify :method => :post, :only => [ :destroy, :create, :update ],
12
+ :redirect_to => { :action => :list }
13
+
14
+ def list
15
+ @system_settings = SystemSettings.find(:first)
16
+ redirect_to :action => :show, :id => @system_settings
17
+ end
18
+
19
+ def show
20
+ foreign()
21
+ @system_settings = SystemSettings.find(:first)
22
+ end
23
+
24
+ def new
25
+ @system_settings = SystemSettings.find(:first)
26
+ if @system_settings != nil
27
+ redirect_to :action => :edit, :id => @system_settings.id
28
+ else
29
+ foreign()
30
+ @system_settings = SystemSettings.new
31
+ end
32
+ end
33
+
34
+ def create
35
+ @system_settings = SystemSettings.new(params[:system_settings])
36
+ if @system_settings.save
37
+ flash[:notice] = 'SystemSettings was successfully created.'
38
+ redirect_to :action => 'list'
39
+ else
40
+ render :action => 'new'
41
+ end
42
+ end
43
+
44
+ def edit
45
+ foreign()
46
+ @system_settings = SystemSettings.find(params[:id])
47
+ end
48
+
49
+ def update
50
+ @system_settings = SystemSettings.find(params[:id])
51
+ if @system_settings.update_attributes(params[:system_settings])
52
+ flash[:notice] = 'SystemSettings was successfully updated.'
53
+ redirect_to :action => 'show', :id => @system_settings
54
+ else
55
+ foreign
56
+ render :action => 'edit'
57
+ end
58
+ end
59
+
60
+ def destroy
61
+ SystemSettings.find(params[:id]).destroy
62
+ redirect_to :action => 'list'
63
+ end
64
+
65
+ protected
66
+
67
+ def foreign
68
+ @roles = Role.find(:all, :order => 'name')
69
+ @self_reg_roles = @roles.clone
70
+ @self_reg_roles.unshift Role.new(:id => nil, :name => '(none)')
71
+ @pages = ContentPage.find(:all, :order => 'name')
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,293 @@
1
+ require 'digest/sha1'
2
+
3
+ module Goldberg
4
+ class UsersController < ApplicationController
5
+ include Goldberg::Controller
6
+
7
+ # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
8
+ verify :method => :post, :only => [ :destroy, :create, :update ],
9
+ :redirect_to => { :action => :list }
10
+
11
+ before_filter do
12
+ @self_reg = false
13
+ @delegate_reg = false
14
+ true # proceed...
15
+ end
16
+ before_filter :foreign,
17
+ :only => [:new, :delegate_register, :create, :delegate_create,
18
+ :edit, :delegate_edit, :update, :delegate_update]
19
+ before_filter :enable_self_reg,
20
+ :only => [:self_show, :self_register, :self_create, :self_edit,
21
+ :self_update, :confirm_registration, :confirm_registration_submit]
22
+ before_filter :enable_delegate_reg,
23
+ :only => [:delegate_list, :delegate_show, :delegate_register,
24
+ :delegate_create, :delegate_edit, :delegate_update,
25
+ :delegate_destroy]
26
+
27
+ def list
28
+ if @delegate_reg
29
+ conditions = ['role_id in (?)', Goldberg.credentials.role_ids]
30
+ else
31
+ conditions = nil
32
+ end
33
+ @users = User.find(:all, :conditions => conditions, :order => 'name')
34
+ render :action => 'list'
35
+ end
36
+ alias_method :delegate_list, :list
37
+
38
+ def show
39
+ if @self_reg
40
+ @user = Goldberg.user
41
+ else
42
+ @user = User.find(params[:id])
43
+ end
44
+ if @user
45
+ if @user.role_id
46
+ @role = Role.find(@user.role_id)
47
+ else
48
+ @role = Role.new(:id => nil, :name => '(none)')
49
+ end
50
+ render :action => 'show'
51
+ else
52
+ render :nothing => true
53
+ end
54
+ end
55
+ alias_method :self_show, :show
56
+ alias_method :delegate_show, :show
57
+
58
+ def new
59
+ @user = User.new
60
+ render :action => 'new'
61
+ end
62
+ alias_method :self_register, :new
63
+ alias_method :delegate_register, :new
64
+
65
+ def create
66
+ @user = User.new(params[:user])
67
+ if @self_reg
68
+ @user.role_id = Goldberg.settings.self_reg_role_id
69
+ @user.self_reg_confirmation_required =
70
+ Goldberg.settings.self_reg_confirmation_required
71
+ if Goldberg.settings.self_reg_send_confirmation_email
72
+ if not @user.email_valid?
73
+ flash.now[:error] = 'A valid email address is required!'
74
+ render :action => 'new'
75
+ return
76
+ end
77
+ end
78
+ end
79
+
80
+ if params[:user][:clear_password].length == 0 or
81
+ params[:user][:confirm_password] != params[:user][:clear_password]
82
+ flash.now[:error] = 'Password invalid!'
83
+ render :action => 'new'
84
+ else
85
+ if @user.save
86
+ flash.now[:notice] = 'User was successfully created.'
87
+ if @self_reg
88
+ if Goldberg.settings.self_reg_confirmation_required
89
+ if Goldberg.settings.self_reg_send_confirmation_email
90
+ confirm_email = UserMailer.create_confirmation_request(@user)
91
+ UserMailer.deliver(confirm_email)
92
+ end
93
+ render :action => 'create'
94
+ else
95
+ AuthController.set_user(session, @user.id)
96
+ redirect_to @user.get_start_path
97
+ end
98
+ else
99
+ redirect_to :action => 'list'
100
+ end
101
+ else
102
+ render :action => 'new'
103
+ end
104
+ end
105
+ end
106
+ alias_method :self_create, :create
107
+ alias_method :delegate_create, :create
108
+
109
+ # Invoked when a user clicks on a link in a self-registration
110
+ # email. Displays a form where the user can enter their username
111
+ # and password.
112
+ def confirm_registration
113
+ @user = User.find_by_confirmation_key(params[:id])
114
+ @user or flash.now[:error] = 'Sorry, but there is no such confirmation required.'
115
+ render :action => 'confirm_registration'
116
+ end
117
+
118
+ def confirm_registration_submit
119
+ @user = User.find(params[:id])
120
+ # Check password and key etc.
121
+ if @user and @user.self_reg_confirmation_required and
122
+ @user.confirmation_key == params[:user][:confirmation_key] and
123
+ @user.check_password(params[:user][:clear_password])
124
+ # Confirmed: remove confirmation flag and confirmation key,
125
+ # save user.
126
+ @user.self_reg_confirmation_required = false
127
+ @user.confirmation_key = nil
128
+ if @user.save
129
+ flash.now[:notice] = 'Registration confirmed.'
130
+ AuthController.set_user(session, @user.id)
131
+ render :action => 'confirm_registration_submit'
132
+ else
133
+ flash.now[:error] = 'Could not save confirmation!'
134
+ render :action => 'confirm_registration'
135
+ end
136
+ else
137
+ flash.now[:error] = 'Self-registration confirmation invalid!'
138
+ render :action => 'confirm_registration'
139
+ end
140
+ end
141
+
142
+ def edit
143
+ if @self_reg
144
+ @user = Goldberg.user
145
+ else
146
+ @user = User.find(params[:id])
147
+ end
148
+ if @user
149
+ if @user.role_id
150
+ @role = Role.find(@user.role_id)
151
+ end
152
+ render :action => 'edit'
153
+ else
154
+ render :nothing => true
155
+ end
156
+ end
157
+ alias_method :self_edit, :edit
158
+ alias_method :delegate_edit, :edit
159
+
160
+ def update
161
+ if @self_reg
162
+ @user = Goldberg.user
163
+ else
164
+ @user = User.find(params[:id])
165
+ end
166
+ if @user
167
+ if params[:user]['clear_password'] == ''
168
+ params[:user].delete('clear_password')
169
+ end
170
+
171
+ # Not allowed to change your own role.
172
+ if @self_reg
173
+ params[:user][:role_id] = @user.role_id
174
+ end
175
+
176
+ if params[:user][:clear_password] and
177
+ params[:user][:clear_password].length > 0 and
178
+ params[:user][:confirm_password] != params[:user][:clear_password]
179
+ flash.now[:error] = 'Password invalid!'
180
+ render :action => 'edit'
181
+ else
182
+ if @user.update_attributes(params[:user])
183
+ flash.now[:notice] = 'User was successfully updated.'
184
+ redirect_to :action => (@self_reg ? 'self_show' : 'show'),
185
+ :id => @user
186
+ else
187
+ render :action => 'edit'
188
+ end
189
+ end
190
+ end # if @user
191
+ end # def update
192
+ alias_method :self_update, :update
193
+ alias_method :delegate_update, :update
194
+
195
+ def destroy
196
+ User.find(params[:id]).destroy
197
+ redirect_to :action => 'list'
198
+ end
199
+ alias_method :delegate_destroy, :destroy
200
+
201
+ def forgot_password
202
+ render :action => 'forgot_password'
203
+ end
204
+
205
+ def forgot_password_submit
206
+ @user = User.find_by_name_and_email(params[:user][:name],
207
+ params[:user][:email])
208
+ if @user
209
+ if (not @user.self_reg_confirmation_required)
210
+ @user.set_confirmation_key
211
+ if @user.save
212
+ # Send email with confirmation key
213
+ reset_email = UserMailer.create_reset_password_request(@user)
214
+ UserMailer.deliver(reset_email)
215
+ render :action => 'forgot_password_submit'
216
+ else
217
+ render :action => 'forgot_password'
218
+ end
219
+ else
220
+ flash.now[:error] = "You can't reset your password because your account is not yet confirmed."
221
+ render :action => 'forgot_password'
222
+ end
223
+ else
224
+ flash.now[:error] = "No such user/email."
225
+ render :action => 'forgot_password'
226
+ end
227
+ end
228
+
229
+ def reset_password
230
+ # Find user by confirmation key.
231
+ # Render form with confirmation key, username and email.
232
+ @user = User.find_by_confirmation_key(params[:id])
233
+ if @user
234
+ render :action => 'reset_password'
235
+ else
236
+ flash.now[:error] = 'Sorry, but we received no such password reset request.'
237
+ render :action => 'forgot_password'
238
+ end
239
+ end
240
+
241
+ def reset_password_submit
242
+ @user = User.find_by_confirmation_key(params[:id])
243
+ if @user
244
+ if (not @user.self_reg_confirmation_required)
245
+ # set @user.clear_password
246
+ password = @user.class.random_password
247
+ @user.clear_password = password
248
+ @user.password_expired = true
249
+ if @user.save
250
+ # Send email with confirmation key
251
+ password_email = UserMailer.create_reset_password(@user, password)
252
+ UserMailer.deliver(password_email)
253
+ render :action => 'reset_password_submit'
254
+ else
255
+ render :action => 'reset_password'
256
+ end
257
+ else
258
+ flash.now[:error] = "You can't reset your password because your account is not yet confirmed."
259
+ render :action => 'forgot_password'
260
+ end
261
+ else
262
+ flash.now[:error] = "No such password reset request for user."
263
+ render :action => 'forgot_password'
264
+ end
265
+ end
266
+
267
+ protected
268
+
269
+ def foreign
270
+ if @delegate_reg
271
+ conditions = ['id in (?)', Goldberg.credentials.role_ids]
272
+ else
273
+ conditions = nil
274
+ end
275
+ @roles = Role.find(:all, :conditions => conditions, :order => 'name')
276
+ end
277
+
278
+ def enable_self_reg
279
+ @self_reg = (Goldberg.settings.self_reg_enabled || false)
280
+ # (This will also halt the filter chain if self-reg is NOT enabled.)
281
+ end
282
+
283
+ def enable_delegate_reg
284
+ @delegate_reg = true
285
+ end
286
+
287
+ def enable_password_change
288
+ @password_change = true
289
+ true # proceed...
290
+ end
291
+
292
+ end
293
+ end