Skip to content

Commit

Permalink
add ssl enforcing
Browse files Browse the repository at this point in the history
  • Loading branch information
alex-stripe committed Jan 28, 2013
1 parent 6d76ce5 commit a6ddf6c
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 46 deletions.
3 changes: 1 addition & 2 deletions Gemfile
Expand Up @@ -8,5 +8,4 @@ gem 'mongo_mapper'
gem 'bson_ext'
gem 'eco'
gem 'useragent'
gem 'erubis'
gem 'rack-ssl-enforcer', :require => 'rack/ssl-enforcer'
gem 'erubis'
2 changes: 0 additions & 2 deletions Gemfile.lock
Expand Up @@ -55,7 +55,6 @@ GEM
rack (1.4.3)
rack-protection (1.3.2)
rack
rack-ssl-enforcer (0.2.5)
rack-test (0.6.2)
rack (>= 1.0)
rb-fchange (0.0.6)
Expand Down Expand Up @@ -102,7 +101,6 @@ DEPENDENCIES
eco
erubis
mongo_mapper
rack-ssl-enforcer
sinatra
sinatra-contrib
thin
Expand Down
37 changes: 33 additions & 4 deletions admin.rb
Expand Up @@ -49,20 +49,49 @@ def required(*atts)
end
end
end

def protected!
unless authorized?
response['WWW-Authenticate'] = %(Basic realm="Testing HTTP Auth")
throw(:halt, [401, "Not authorized\n"])
end
end

def authorized?
@auth ||= Rack::Auth::Basic::Request.new(request.env)
@auth.provided? && @auth.basic? &&
@auth.credentials && @auth.credentials == [settings.username, settings.password]
end

def ssl_enforce!
unless request.secure?
redirect "https://#{request.host}#{request.fullpath}"
end
end
end

configure :production do
before '/admin/*' do
protected!
end

before '/admin/*' do
ssl_enforce!
end
end

# Router

get '/' do
redirect '/experiments'
redirect '/admin'
end

get '/experiments' do
get '/admin' do
@experiments = Abba::Experiment.all
erb :experiments
end

get '/experiments/:id/chart', :provides => 'application/json' do
get '/admin/experiments/:id/chart', :provides => 'application/json' do
required :start_at, :end_at

experiment = Abba::Experiment.find(params[:id])
Expand All @@ -72,7 +101,7 @@ def required(*atts)
experiment.granular_conversion_rate(start_at: start_at, end_at: end_at).to_json
end

get '/experiments/:id' do
get '/admin/experiments/:id' do
@experiment = Abba::Experiment.find(params[:id])

@start_at = Date.to_mongo(params[:start_at]).beginning_of_day if params[:start_at].present?
Expand Down
1 change: 0 additions & 1 deletion app/abba.rb
Expand Up @@ -3,5 +3,4 @@ module Abba
autoload :Request, 'app/models/request'
autoload :Variant, 'app/models/variant'
autoload :VariantPresentor, 'app/models/variant_presentor'
autoload :Guard, 'app/middleware/guard'
end
2 changes: 1 addition & 1 deletion app/assets/javascripts/admin/chart.module.coffee
Expand Up @@ -4,7 +4,7 @@ $ = jQuery

class Chart extends Controller
fetch: =>
url = "/experiments/#{@options.model.id}/chart"
url = "/admin/experiments/#{@options.model.id}/chart"
data = {start_at: @options.startAt, end_at: @options.endAt}
$.getJSON(url, data, @render)

Expand Down
32 changes: 0 additions & 32 deletions app/middleware/guard.rb

This file was deleted.

2 changes: 1 addition & 1 deletion app/views/experiments.erb
Expand Up @@ -23,7 +23,7 @@
<tr>
<td class="index"><%= i + 1 %></td>
<td class="name">
<a href="/experiments/<%= experiment.id %>">
<a href="/admin/experiments/<%= experiment.id %>">
<%= experiment.name %>
</a>
</td>
Expand Down
2 changes: 1 addition & 1 deletion app/views/layout.erb
Expand Up @@ -8,7 +8,7 @@
<body>
<menu>
<ul>
<li><a href="/experiments">Experiments</a></li>
<li><a href="/admin/experiments">Experiments</a></li>
</ul>

<h1><a href="/">Abba</a></h1>
Expand Down
4 changes: 2 additions & 2 deletions config.yml
@@ -1,3 +1,3 @@
ssl: true
username: guard
password: llama
# authorized_ips:
password: llama

0 comments on commit a6ddf6c

Please sign in to comment.