diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..da4175f --- /dev/null +++ b/Procfile @@ -0,0 +1,2 @@ +web: bundle exec rails s +release: bundle exec rails db:migrate \ No newline at end of file diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 905bc14..b757fd5 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,3 +1,4 @@ class ApplicationController < ActionController::API include Response + include BasicAuth end diff --git a/app/controllers/concerns/basic_auth.rb b/app/controllers/concerns/basic_auth.rb new file mode 100644 index 0000000..0c5f472 --- /dev/null +++ b/app/controllers/concerns/basic_auth.rb @@ -0,0 +1,9 @@ +module BasicAuth + extend ActiveSupport::Concern + + included do + include ActionController::HttpAuthentication::Basic::ControllerMethods + http_basic_authenticate_with name: ENV['BASIC_AUTH_USERNAME'], + password: ENV['BASIC_AUTH_PASSWORD'] + end +end \ No newline at end of file diff --git a/app/controllers/static_controller.rb b/app/controllers/static_controller.rb new file mode 100644 index 0000000..a71771e --- /dev/null +++ b/app/controllers/static_controller.rb @@ -0,0 +1,17 @@ +class StaticController < ActionController::API + include ActionView::Layouts + include BasicAuth + + def frontend_index_html + if params[:path].present? + send_file params[:path] + else + render file: 'protected_public/index.html' + end + end + + def frontend_static + full_path = "protected_public/#{params[:path]}.#{params[:format]}" + send_file full_path + end +end diff --git a/client/public/index.html b/client/public/index.html index b209ea0..908617c 100644 --- a/client/public/index.html +++ b/client/public/index.html @@ -20,7 +20,7 @@ Learn how to configure a non-root public URL by running `npm run build`. --> - + diff --git a/config/routes.rb b/config/routes.rb index 89da8c0..3ea271d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -6,7 +6,8 @@ Rails.application.routes.draw do get 'cash' end end - end - # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html + + get '*path', to: 'static#frontend_static' + root to: 'static#frontend_index_html' end diff --git a/package.json b/package.json index e49a089..b052abd 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,13 @@ { + "engines": { + "node": "10.15.3", + "yarn": "1.15.2" + }, + "scripts": { + "build": "yarn --cwd client install && yarn --cwd client build", + "deploy": "cp -a client/build/. protected_public/", + "heroku-postbuild": "yarn build && yarn deploy" + }, "dependencies": { "react-router-dom": "^5.0.1" } diff --git a/protected_public/.gitkeep b/protected_public/.gitkeep new file mode 100644 index 0000000..e69de29