rack-ninja_auth 0.2.0 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 88a38cc0bfef70c5c01d281dcf65094785c04385
4
- data.tar.gz: fc537e1b113fe60f4e1dcf73199ef05680e20c6e
3
+ metadata.gz: ed94dae3e5a5547917ea634c229707e3b24595c3
4
+ data.tar.gz: 02b0610f20badd0ab573b099aabaf09ae9498460
5
5
  SHA512:
6
- metadata.gz: fa21fc1f600c305ebb5979614c88c00811c842fb74bcf7fa6ecf53fdd85c91df13f0e43662143d1e9c12518d5c9ac5e6d2847a89bb59a3db620ee58f5f028e9a
7
- data.tar.gz: 3e6034c32ab80eaafc6321e9b4382db4e43aafba419e7a40c76d7784ba81c527be7890881739c37d5ef80f1ac86242c88e32bd446c2417e2b687a0fbb20ff284
6
+ metadata.gz: 7223fbff5f7dad8363aba145e9578c69fbb4c25b8835cf766211718b2c90cde930be18a0e34748e8ddadc8bee408dcbb61514081833479cff4520bd8c347b2e9
7
+ data.tar.gz: ff11492d8eeecf6678ec42a7862f5358ade0d35864f1bada8b3c64d41ad84210a0557ccea82f5c95d644a86ab23451672cb45b420eaaed5b2eb385832ac6c880
data/README.md CHANGED
@@ -4,7 +4,7 @@ Require authentication via google for your application without passing any auth
4
4
 
5
5
  ## Example
6
6
 
7
- Add this as middleware to your rack application, then execute with `NINJA_GOOGLE_CLIENT_ID` and `NINJA_GOOGLE_CLIENT_SECRET` environment variables set.
7
+ Add this as middleware to your rack application, then execute with `NINJA_GOOGLE_CLIENT_ID`, `NINJA_GOOGLE_CLIENT_SECRET` and `NINJA_REDIS_URL` environment variables set.
8
8
 
9
9
  ```ruby
10
10
  require 'sinatra'
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  module NinjaAuth
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
@@ -1,13 +1,17 @@
1
1
  require 'rack/ninja_auth/version'
2
2
  require 'sinatra/base'
3
3
  require 'omniauth/google_oauth2'
4
+ require 'rack/session/redis'
5
+ require 'rack/accept'
4
6
 
5
7
  module Rack
6
8
  module NinjaAuth
7
9
  class Middleware < Sinatra::Base
8
- use Rack::Session::Pool,
10
+ use Rack::Accept
11
+ use Rack::Session::Redis,
9
12
  key: 'rack.ninja_auth',
10
- expire_after: 2592000
13
+ expire_after: 2592000,
14
+ redis_server: ENV['NINJA_REDIS_URL'] || 'redis://127.0.0.1:6379/0/rack:ninja_auth'
11
15
 
12
16
  raise "Please set NINJA_GOOGLE_CLIENT_ID and NINJA_GOOGLE_CLIENT_SECRET to use NinjaAuth" unless ENV["NINJA_GOOGLE_CLIENT_ID"] && ENV["NINJA_GOOGLE_CLIENT_SECRET"]
13
17
  use OmniAuth::Builder do
@@ -22,8 +26,10 @@ module Rack
22
26
  end
23
27
 
24
28
  before do
29
+ @hit_real_app = false
25
30
  if is_authenticated?
26
31
  res = @main_app.call(request.env)
32
+ @hit_real_app = true
27
33
  headers res[1]
28
34
  halt res[0], res[2]
29
35
  end
@@ -34,17 +40,18 @@ module Rack
34
40
  session[:user] = request.env["omniauth.auth"].info.email
35
41
  redirect session[:redirect_to]
36
42
  else
37
- redirect '/unauthorized'
43
+ redirect '/auth/failure'
38
44
  end
39
45
  end
40
46
 
41
- get '/unauthorized' do
47
+ get '/auth/failure' do
42
48
  send_file(@not_allowed_file, status: 401)
43
49
  end
44
50
 
45
51
  after do
46
- if status == 404
47
- session[:redirect_to] = env['REQUEST_URI'] == '/auth/google_oauth2' ? '/' : env['REQUEST_URI']
52
+ if !@hit_real_app && status == 404
53
+ halt(403) unless env['rack-accept.request'].media_type?('text/html')
54
+ session[:redirect_to] = env['REQUEST_URI'] =~ %r{^/auth/google_oauth2} ? '/' : env['REQUEST_URI']
48
55
  redirect '/auth/google_oauth2'
49
56
  end
50
57
  end
@@ -52,7 +59,7 @@ module Rack
52
59
  private
53
60
 
54
61
  def is_authenticated?
55
- !!session[:user]
62
+ !session[:user].nil?
56
63
  end
57
64
  end
58
65
  end
@@ -21,6 +21,8 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency "sinatra", "~> 1.4"
23
23
  spec.add_dependency "omniauth-google-oauth2", "~> 0.2"
24
+ spec.add_dependency "redis-rack", "~> 1.5"
25
+ spec.add_dependency "rack-accept", "~> 0.4"
24
26
 
25
27
  spec.add_development_dependency "bundler", "~> 1.10"
26
28
  spec.add_development_dependency "rake", "~> 10.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-ninja_auth
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - JP Hastings-Spital
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-08-27 00:00:00.000000000 Z
11
+ date: 2015-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sinatra
@@ -38,6 +38,34 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: redis-rack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.5'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rack-accept
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.4'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '0.4'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: bundler
43
71
  requirement: !ruby/object:Gem::Requirement