railsbricks 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/Gemfile +7 -0
  4. data/LICENSE.txt +674 -0
  5. data/README.md +81 -0
  6. data/bin/rbricks +5 -0
  7. data/lib/railsbricks.rb +112 -0
  8. data/lib/railsbricks/app_generator.rb +338 -0
  9. data/lib/railsbricks/assets/config/admin_post_routes.rbr +3 -0
  10. data/lib/railsbricks/assets/config/application.yml +9 -0
  11. data/lib/railsbricks/assets/config/contact_routes.rbr +2 -0
  12. data/lib/railsbricks/assets/config/initializers/devise_email/devise.rb +267 -0
  13. data/lib/railsbricks/assets/config/initializers/devise_username/devise.rb +267 -0
  14. data/lib/railsbricks/assets/config/post_routes.rbr +2 -0
  15. data/lib/railsbricks/assets/config/routes.rb +15 -0
  16. data/lib/railsbricks/assets/config/unicorn.rb +22 -0
  17. data/lib/railsbricks/assets/controllers/admin/base_controller.rb +10 -0
  18. data/lib/railsbricks/assets/controllers/admin/devise_email/users_controller.rb +66 -0
  19. data/lib/railsbricks/assets/controllers/admin/devise_username/users_controller.rb +69 -0
  20. data/lib/railsbricks/assets/controllers/admin/posts_controller.rb +73 -0
  21. data/lib/railsbricks/assets/controllers/brick_contact.rbr +23 -0
  22. data/lib/railsbricks/assets/controllers/devise_email/application_controller.rb +54 -0
  23. data/lib/railsbricks/assets/controllers/devise_username/application_controller.rb +56 -0
  24. data/lib/railsbricks/assets/controllers/pages_controller.rb +13 -0
  25. data/lib/railsbricks/assets/controllers/posts_controller.rbr +10 -0
  26. data/lib/railsbricks/assets/database/postgresql.yml +12 -0
  27. data/lib/railsbricks/assets/database/sqlite3.yml +8 -0
  28. data/lib/railsbricks/assets/gemfile/Gemfile +41 -0
  29. data/lib/railsbricks/assets/git/gitignore +30 -0
  30. data/lib/railsbricks/assets/javascripts/analytics.js.coffee +5 -0
  31. data/lib/railsbricks/assets/lib/markdown_writer.rb +19 -0
  32. data/lib/railsbricks/assets/mailers/contact_mailer.rb +13 -0
  33. data/lib/railsbricks/assets/migrations/20141010133702_create_posts.rb +17 -0
  34. data/lib/railsbricks/assets/migrations/devise_email/20141010133701_devise_create_users.rb +48 -0
  35. data/lib/railsbricks/assets/migrations/devise_username/20141010133701_devise_create_users.rb +54 -0
  36. data/lib/railsbricks/assets/models/devise_email/user.rb +41 -0
  37. data/lib/railsbricks/assets/models/devise_username/user.rb +57 -0
  38. data/lib/railsbricks/assets/models/post.rb +30 -0
  39. data/lib/railsbricks/assets/procfile/Procfile +1 -0
  40. data/lib/railsbricks/assets/seeds/devise_email/seeds_no_test_users.rb +11 -0
  41. data/lib/railsbricks/assets/seeds/devise_email/seeds_test_users.rb +24 -0
  42. data/lib/railsbricks/assets/seeds/devise_username/seeds_no_test_users.rb +12 -0
  43. data/lib/railsbricks/assets/seeds/devise_username/seeds_test_users.rb +26 -0
  44. data/lib/railsbricks/assets/stylesheets/application.scss +6 -0
  45. data/lib/railsbricks/assets/stylesheets/railsbricks_custom.scss +562 -0
  46. data/lib/railsbricks/assets/views/admin/base/admin_posts_link.rbr +1 -0
  47. data/lib/railsbricks/assets/views/admin/base/devise_email/index.html.erb +41 -0
  48. data/lib/railsbricks/assets/views/admin/base/devise_username/index.html.erb +41 -0
  49. data/lib/railsbricks/assets/views/admin/posts/_form.html.erb +54 -0
  50. data/lib/railsbricks/assets/views/admin/posts/dashboard.html.erb +9 -0
  51. data/lib/railsbricks/assets/views/admin/posts/drafts.html.erb +23 -0
  52. data/lib/railsbricks/assets/views/admin/posts/edit.html.erb +10 -0
  53. data/lib/railsbricks/assets/views/admin/posts/index.html.erb +23 -0
  54. data/lib/railsbricks/assets/views/admin/posts/new.html.erb +6 -0
  55. data/lib/railsbricks/assets/views/admin/users/devise_email/edit.html.erb +65 -0
  56. data/lib/railsbricks/assets/views/admin/users/devise_email/index.html.erb +54 -0
  57. data/lib/railsbricks/assets/views/admin/users/devise_username/edit.html.erb +74 -0
  58. data/lib/railsbricks/assets/views/admin/users/devise_username/index.html.erb +56 -0
  59. data/lib/railsbricks/assets/views/contact_mailer/contact_message.html.erb +5 -0
  60. data/lib/railsbricks/assets/views/devise/allow_signup_links.rbr +11 -0
  61. data/lib/railsbricks/assets/views/devise/devise_email/confirmations/new.html.erb +31 -0
  62. data/lib/railsbricks/assets/views/devise/devise_email/mailer/confirmation_instructions.html.erb +12 -0
  63. data/lib/railsbricks/assets/views/devise/devise_email/mailer/reset_password_instructions.html.erb +15 -0
  64. data/lib/railsbricks/assets/views/devise/devise_email/passwords/edit.html.erb +43 -0
  65. data/lib/railsbricks/assets/views/devise/devise_email/passwords/new.html.erb +31 -0
  66. data/lib/railsbricks/assets/views/devise/devise_email/registrations/edit.html.erb +63 -0
  67. data/lib/railsbricks/assets/views/devise/devise_email/registrations/new.html.erb +49 -0
  68. data/lib/railsbricks/assets/views/devise/devise_email/sessions/new.html.erb +49 -0
  69. data/lib/railsbricks/assets/views/devise/devise_email/shared/_links.erb +19 -0
  70. data/lib/railsbricks/assets/views/devise/devise_username/confirmations/new.html.erb +31 -0
  71. data/lib/railsbricks/assets/views/devise/devise_username/mailer/confirmation_instructions.html.erb +12 -0
  72. data/lib/railsbricks/assets/views/devise/devise_username/mailer/reset_password_instructions.html.erb +15 -0
  73. data/lib/railsbricks/assets/views/devise/devise_username/passwords/edit.html.erb +43 -0
  74. data/lib/railsbricks/assets/views/devise/devise_username/passwords/new.html.erb +31 -0
  75. data/lib/railsbricks/assets/views/devise/devise_username/registrations/edit.html.erb +63 -0
  76. data/lib/railsbricks/assets/views/devise/devise_username/registrations/new.html.erb +58 -0
  77. data/lib/railsbricks/assets/views/devise/devise_username/sessions/new.html.erb +49 -0
  78. data/lib/railsbricks/assets/views/devise/devise_username/shared/_links.erb +19 -0
  79. data/lib/railsbricks/assets/views/layouts/_navigation_links.html.erb +15 -0
  80. data/lib/railsbricks/assets/views/layouts/brick_analytics.rbr +11 -0
  81. data/lib/railsbricks/assets/views/pages/contact.html.erb +46 -0
  82. data/lib/railsbricks/assets/views/pages/inside.html.erb +4 -0
  83. data/lib/railsbricks/assets/views/pages/posts.html.erb +18 -0
  84. data/lib/railsbricks/assets/views/pages/show_post.html.erb +6 -0
  85. data/lib/railsbricks/auth_builder.rb +147 -0
  86. data/lib/railsbricks/config_helpers.rb +27 -0
  87. data/lib/railsbricks/config_values.rb +14 -0
  88. data/lib/railsbricks/errors.rb +18 -0
  89. data/lib/railsbricks/file_helpers.rb +54 -0
  90. data/lib/railsbricks/foundation/README.md +24 -0
  91. data/lib/railsbricks/foundation/Rakefile +6 -0
  92. data/lib/railsbricks/foundation/app/assets/images/.keep +0 -0
  93. data/lib/railsbricks/foundation/app/assets/images/apple-touch-icon-precomposed.png +0 -0
  94. data/lib/railsbricks/foundation/app/assets/images/apple-touch-icon.png +0 -0
  95. data/lib/railsbricks/foundation/app/assets/images/favicon.ico +0 -0
  96. data/lib/railsbricks/foundation/app/assets/javascripts/application.js +17 -0
  97. data/lib/railsbricks/foundation/app/assets/javascripts/common.js +7 -0
  98. data/lib/railsbricks/foundation/app/controllers/application_controller.rb +5 -0
  99. data/lib/railsbricks/foundation/app/controllers/concerns/.keep +0 -0
  100. data/lib/railsbricks/foundation/app/controllers/pages_controller.rb +7 -0
  101. data/lib/railsbricks/foundation/app/helpers/application_helper.rb +7 -0
  102. data/lib/railsbricks/foundation/app/helpers/email_helper.rb +5 -0
  103. data/lib/railsbricks/foundation/app/mailers/.keep +0 -0
  104. data/lib/railsbricks/foundation/app/models/.keep +0 -0
  105. data/lib/railsbricks/foundation/app/models/concerns/.keep +0 -0
  106. data/lib/railsbricks/foundation/app/views/layouts/_footer.html.erb +18 -0
  107. data/lib/railsbricks/foundation/app/views/layouts/_messages.html.erb +9 -0
  108. data/lib/railsbricks/foundation/app/views/layouts/_navigation.html.erb +18 -0
  109. data/lib/railsbricks/foundation/app/views/layouts/_navigation_links.html.erb +3 -0
  110. data/lib/railsbricks/foundation/app/views/layouts/application.html.erb +38 -0
  111. data/lib/railsbricks/foundation/app/views/pages/home.html.erb +2 -0
  112. data/lib/railsbricks/foundation/bin/bundle +3 -0
  113. data/lib/railsbricks/foundation/bin/rails +4 -0
  114. data/lib/railsbricks/foundation/bin/rake +4 -0
  115. data/lib/railsbricks/foundation/config.ru +4 -0
  116. data/lib/railsbricks/foundation/config/application.rb +34 -0
  117. data/lib/railsbricks/foundation/config/boot.rb +4 -0
  118. data/lib/railsbricks/foundation/config/environment.rb +5 -0
  119. data/lib/railsbricks/foundation/config/environments/development.rb +41 -0
  120. data/lib/railsbricks/foundation/config/environments/production.rb +95 -0
  121. data/lib/railsbricks/foundation/config/environments/test.rb +51 -0
  122. data/lib/railsbricks/foundation/config/initializers/backtrace_silencers.rb +7 -0
  123. data/lib/railsbricks/foundation/config/initializers/date_format.rb +27 -0
  124. data/lib/railsbricks/foundation/config/initializers/filter_parameter_logging.rb +4 -0
  125. data/lib/railsbricks/foundation/config/initializers/friendly_id.rb +88 -0
  126. data/lib/railsbricks/foundation/config/initializers/inflections.rb +16 -0
  127. data/lib/railsbricks/foundation/config/initializers/kaminari_config.rb +10 -0
  128. data/lib/railsbricks/foundation/config/initializers/mime_types.rb +5 -0
  129. data/lib/railsbricks/foundation/config/initializers/secret_token.rb +25 -0
  130. data/lib/railsbricks/foundation/config/initializers/session_store.rb +3 -0
  131. data/lib/railsbricks/foundation/config/initializers/wrap_parameters.rb +14 -0
  132. data/lib/railsbricks/foundation/config/locales/en.yml +23 -0
  133. data/lib/railsbricks/foundation/config/routes.rb +7 -0
  134. data/lib/railsbricks/foundation/db/migrate/20131103142222_create_friendly_id_slugs.rb +15 -0
  135. data/lib/railsbricks/foundation/db/schema.rb +29 -0
  136. data/lib/railsbricks/foundation/db/seeds.rb +0 -0
  137. data/lib/railsbricks/foundation/lib/assets/.keep +0 -0
  138. data/lib/railsbricks/foundation/lib/tasks/.keep +0 -0
  139. data/lib/railsbricks/foundation/public/404.html +58 -0
  140. data/lib/railsbricks/foundation/public/422.html +58 -0
  141. data/lib/railsbricks/foundation/public/500.html +57 -0
  142. data/lib/railsbricks/foundation/public/favicon.ico +0 -0
  143. data/lib/railsbricks/foundation/public/robots.txt +5 -0
  144. data/lib/railsbricks/foundation/vendor/assets/javascripts/.keep +0 -0
  145. data/lib/railsbricks/foundation/vendor/assets/stylesheets/.keep +0 -0
  146. data/lib/railsbricks/gemfile_builder.rb +118 -0
  147. data/lib/railsbricks/menu.rb +524 -0
  148. data/lib/railsbricks/post_builder.rb +103 -0
  149. data/lib/railsbricks/string_helpers.rb +39 -0
  150. data/lib/railsbricks/style_builder.rb +97 -0
  151. data/lib/railsbricks/ui_helpers.rb +11 -0
  152. data/lib/railsbricks/validator.rb +68 -0
  153. data/lib/railsbricks/version.rb +34 -0
  154. data/railsbricks.gemspec +16 -0
  155. metadata +198 -0
@@ -0,0 +1,2 @@
1
+ get "posts", to: "pages#posts", as: "posts"
2
+ get "posts/:id", to: "pages#show_post", as: "post"
@@ -0,0 +1,15 @@
1
+ BRICK_APP_NAME::Application.routes.draw do
2
+ root "pages#home"
3
+ get "home", to: "pages#home", as: "home"
4
+ get "inside", to: "pages#inside", as: "inside"
5
+ BRICK_CONTACT_ROUTES
6
+ BRICK_POST_ROUTES
7
+ devise_for :users
8
+
9
+ namespace :admin do
10
+ root "base#index"
11
+ resources :users
12
+ BRICK_ADMIN_POST_ROUTES
13
+ end
14
+
15
+ end
@@ -0,0 +1,22 @@
1
+ worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
2
+ timeout 15
3
+ preload_app true
4
+
5
+ before_fork do |server, worker|
6
+ Signal.trap 'TERM' do
7
+ puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
8
+ Process.kill 'QUIT', Process.pid
9
+ end
10
+
11
+ defined?(ActiveRecord::Base) and
12
+ ActiveRecord::Base.connection.disconnect!
13
+ end
14
+
15
+ after_fork do |server, worker|
16
+ Signal.trap 'TERM' do
17
+ puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
18
+ end
19
+
20
+ defined?(ActiveRecord::Base) and
21
+ ActiveRecord::Base.establish_connection
22
+ end
@@ -0,0 +1,10 @@
1
+ class Admin::BaseController < ApplicationController
2
+ before_filter :require_admin!
3
+
4
+ def index
5
+ @last_signups = User.last_signups(10)
6
+ @last_signins = User.last_signins(10)
7
+ @count = User.users_count
8
+ BRICK_POST_COUNT
9
+ end
10
+ end
@@ -0,0 +1,66 @@
1
+ class Admin::UsersController < Admin::BaseController
2
+
3
+ before_action :set_user, only: [
4
+ :show,
5
+ :edit,
6
+ :update,
7
+ :destroy
8
+ ]
9
+
10
+
11
+ def index
12
+ @users = User.search_and_order(params[:search], params[:page])
13
+ end
14
+
15
+ def show
16
+ redirect_to edit_admin_user_path(params[:id])
17
+ end
18
+
19
+ def edit
20
+ end
21
+
22
+ def update
23
+ old_email = @user.email
24
+ new_params = user_params.dup
25
+ new_params[:email] = new_params[:email].strip
26
+
27
+ @user.email = new_params[:email]
28
+ @user.password = new_params[:password] if new_params[:password].strip.length > 0
29
+ @user.password_confirmation = new_params[:password_confirmation] if new_params[:password_confirmation].strip.length > 0
30
+
31
+ if current_user.id != @user.id
32
+ @user.admin = new_params[:admin]=="0" ? false : true
33
+ @user.locked = new_params[:locked]=="0" ? false : true
34
+ end
35
+
36
+ if @user.valid?
37
+ @user.skip_reconfirmation!
38
+ @user.save
39
+ redirect_to admin_users_path, notice: "#{@user.email} updated."
40
+ else
41
+ flash[:alert] = "#{old_email} couldn't be updated."
42
+ render :edit
43
+ end
44
+ end
45
+
46
+
47
+ private
48
+
49
+ def set_user
50
+ @user = User.find(params[:id])
51
+ rescue
52
+ flash[:alert] = "The user with an id of #{params[:id]} doesn't exist."
53
+ redirect_to admin_users_path
54
+ end
55
+
56
+ def user_params
57
+ params.require(:user).permit(
58
+ :email,
59
+ :password,
60
+ :password_confirmation,
61
+ :admin,
62
+ :locked
63
+ )
64
+ end
65
+
66
+ end
@@ -0,0 +1,69 @@
1
+ class Admin::UsersController < Admin::BaseController
2
+
3
+ before_action :set_user, only: [
4
+ :show,
5
+ :edit,
6
+ :update,
7
+ :destroy
8
+ ]
9
+
10
+
11
+ def index
12
+ @users = User.search_and_order(params[:search], params[:page])
13
+ end
14
+
15
+ def show
16
+ redirect_to edit_admin_user_path(params[:id])
17
+ end
18
+
19
+ def edit
20
+ end
21
+
22
+ def update
23
+ old_username = @user.username
24
+ new_params = user_params.dup
25
+ new_params[:username] = new_params[:username].strip
26
+ new_params[:email] = new_params[:email].strip
27
+
28
+ @user.username = new_params[:username]
29
+ @user.email = new_params[:email]
30
+ @user.password = new_params[:password] if new_params[:password].strip.length > 0
31
+ @user.password_confirmation = new_params[:password_confirmation] if new_params[:password_confirmation].strip.length > 0
32
+
33
+ if current_user.id != @user.id
34
+ @user.admin = new_params[:admin]=="0" ? false : true
35
+ @user.locked = new_params[:locked]=="0" ? false : true
36
+ end
37
+
38
+ if @user.valid?
39
+ @user.skip_reconfirmation!
40
+ @user.save
41
+ redirect_to admin_users_path, notice: "#{@user.username} updated."
42
+ else
43
+ flash[:alert] = "#{old_username} couldn't be updated."
44
+ render :edit
45
+ end
46
+ end
47
+
48
+
49
+ private
50
+
51
+ def set_user
52
+ @user = User.friendly.find(params[:id])
53
+ rescue
54
+ flash[:alert] = "The user with an id of #{params[:id]} doesn't exist."
55
+ redirect_to admin_users_path
56
+ end
57
+
58
+ def user_params
59
+ params.require(:user).permit(
60
+ :username,
61
+ :email,
62
+ :password,
63
+ :password_confirmation,
64
+ :admin,
65
+ :locked
66
+ )
67
+ end
68
+
69
+ end
@@ -0,0 +1,73 @@
1
+ class Admin::PostsController < Admin::BaseController
2
+
3
+ before_action :set_post, only: [
4
+ :edit,
5
+ :update,
6
+ :destroy
7
+ ]
8
+
9
+
10
+ def dashboard
11
+ @published_post_count = Post.published.count
12
+ @draft_post_count = Post.drafted.count
13
+ end
14
+
15
+ def index
16
+ @posts = Post.published.page(params[:page]).per(50)
17
+ end
18
+
19
+ def drafts
20
+ @posts = Post.drafted.page(params[:page]).per(50)
21
+ end
22
+
23
+ def new
24
+ @post = Post.new
25
+ end
26
+
27
+ def create
28
+ @post = Post.new(post_params)
29
+ @post.user_id = current_user.id
30
+ if @post.save
31
+ redirect_to admin_posts_dashboard_path, notice: "New post published."
32
+ else
33
+ flash[:alert] = "Post not published."
34
+ render :new
35
+ end
36
+ end
37
+
38
+ def edit
39
+ end
40
+
41
+ def update
42
+ @post.slug = nil
43
+ if @post.update(post_params)
44
+ redirect_to admin_posts_dashboard_path, notice: "Post successfully edited."
45
+ else
46
+ flash[:alert] = "The post was not edited."
47
+ render :edit
48
+ end
49
+ end
50
+
51
+ def destroy
52
+ @post.destroy
53
+ redirect_to admin_posts_path, notice: "The post has been deleted."
54
+ end
55
+
56
+
57
+ private
58
+
59
+ def set_post
60
+ @post = Post.friendly.find(params[:id])
61
+ end
62
+
63
+ def post_params
64
+ params.require(:post).permit(
65
+ :title,
66
+ :content_md,
67
+ :draft,
68
+ :updated_at
69
+ )
70
+ end
71
+
72
+
73
+ end
@@ -0,0 +1,23 @@
1
+
2
+ def email
3
+ @name = params[:name]
4
+ @email = params[:email]
5
+ @message = params[:message]
6
+
7
+ if @name.blank?
8
+ flash[:alert] = "Please enter your name before sending your message. Thank you."
9
+ render :contact
10
+ elsif @email.blank? || @email.scan(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i).size < 1
11
+ flash[:alert] = "You must provide a valid email address before sending your message. Thank you."
12
+ render :contact
13
+ elsif @message.blank? || @message.length < 10
14
+ flash[:alert] = "Your message is empty. Requires at least 10 characters. Nothing to send."
15
+ render :contact
16
+ elsif @message.scan(/<a href=/).size > 0 || @message.scan(/\[url=/).size > 0 || @message.scan(/\[link=/).size > 0 || @message.scan(/http:\/\//).size > 0
17
+ flash[:alert] = "You can't send links. Thank you for your understanding."
18
+ render :contact
19
+ else
20
+ ContactMailer.contact_message(@name,@email,@message).deliver_now
21
+ redirect_to root_path, notice: "Your message was sent. Thank you."
22
+ end
23
+ end
@@ -0,0 +1,54 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+
6
+ before_filter :configure_permitted_parameters, if: :devise_controller?
7
+ before_filter :reject_locked!, if: :devise_controller?
8
+
9
+
10
+ # Devise permitted params
11
+ def configure_permitted_parameters
12
+ devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(
13
+ :email,
14
+ :password,
15
+ :password_confirmation)
16
+ }
17
+ devise_parameter_sanitizer.for(:account_update) { |u| u.permit(
18
+ :email,
19
+ :password,
20
+ :password_confirmation,
21
+ :current_password
22
+ )
23
+ }
24
+ end
25
+
26
+ # Redirects on successful sign in
27
+ def after_sign_in_path_for(resource)
28
+ inside_path
29
+ end
30
+
31
+ # Auto-sign out locked users
32
+ def reject_locked!
33
+ if current_user && current_user.locked?
34
+ sign_out current_user
35
+ user_session = nil
36
+ current_user = nil
37
+ flash[:alert] = "Your account is locked."
38
+ flash[:notice] = nil
39
+ redirect_to root_url
40
+ end
41
+ end
42
+ helper_method :reject_locked!
43
+
44
+ # Only permits admin users
45
+ def require_admin!
46
+ authenticate_user!
47
+
48
+ if current_user && !current_user.admin?
49
+ redirect_to root_path
50
+ end
51
+ end
52
+ helper_method :require_admin!
53
+
54
+ end
@@ -0,0 +1,56 @@
1
+ class ApplicationController < ActionController::Base
2
+ # Prevent CSRF attacks by raising an exception.
3
+ # For APIs, you may want to use :null_session instead.
4
+ protect_from_forgery with: :exception
5
+
6
+ before_filter :configure_permitted_parameters, if: :devise_controller?
7
+ before_filter :reject_locked!, if: :devise_controller?
8
+
9
+
10
+ # Devise permitted params
11
+ def configure_permitted_parameters
12
+ devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(
13
+ :username,
14
+ :email,
15
+ :password,
16
+ :password_confirmation)
17
+ }
18
+ devise_parameter_sanitizer.for(:account_update) { |u| u.permit(
19
+ :username,
20
+ :email,
21
+ :password,
22
+ :password_confirmation,
23
+ :current_password
24
+ )
25
+ }
26
+ end
27
+
28
+ # Redirects on successful sign in
29
+ def after_sign_in_path_for(resource)
30
+ inside_path
31
+ end
32
+
33
+ # Auto-sign out locked users
34
+ def reject_locked!
35
+ if current_user && current_user.locked?
36
+ sign_out current_user
37
+ user_session = nil
38
+ current_user = nil
39
+ flash[:alert] = "Your account is locked."
40
+ flash[:notice] = nil
41
+ redirect_to root_url
42
+ end
43
+ end
44
+ helper_method :reject_locked!
45
+
46
+ # Only permits admin users
47
+ def require_admin!
48
+ authenticate_user!
49
+
50
+ if current_user && !current_user.admin?
51
+ redirect_to root_path
52
+ end
53
+ end
54
+ helper_method :require_admin!
55
+
56
+ end
@@ -0,0 +1,13 @@
1
+ class PagesController < ApplicationController
2
+ before_action :authenticate_user!, only: [
3
+ :inside
4
+ ]
5
+
6
+ def home
7
+ end
8
+
9
+ def inside
10
+ end
11
+ BRICK_POSTS_CONTROLLER
12
+ BRICK_CONTACT_CONTROLLER
13
+ end
@@ -0,0 +1,10 @@
1
+
2
+ def posts
3
+ @posts = Post.published.page(params[:page]).per(10)
4
+ end
5
+
6
+ def show_post
7
+ @post = Post.friendly.find(params[:id])
8
+ rescue
9
+ redirect_to root_path
10
+ end
@@ -0,0 +1,12 @@
1
+ # PostgreSQL
2
+ # Ensure the PostgreSQL gem is defined in your Gemfile
3
+ # gem 'pg'
4
+ development:
5
+ adapter: postgresql
6
+ encoding: utf8
7
+ database: BRICK_DB_NAME
8
+ username: BRICK_DB_USERNAME
9
+ host: BRICK_DB_SERVER
10
+ pool: 5
11
+ port: BRICK_DB_PORT
12
+ BRICK_DB_PASSWORD