intra 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +2 -0
- data/app/views/intra/sessions/new.html.erb +7 -11
- data/lib/intra/engine.rb +4 -0
- data/lib/intra/request_forgery_protection.rb +67 -0
- data/lib/intra/version.rb +1 -1
- data/lib/intra.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf985d8472b139ca940b7bc455f3d375c7b9ca77ca89fac60eaee241819ed15f
|
4
|
+
data.tar.gz: 415cd8474d33c5723929227b88276d5e38dc2db190f01932052d0bbd7fa8b57a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e4e394b9d3e97cdc2e51e320c4aecfb638029b4c854755f278e6e7aec9c6be3154d7541fc7ec79f5ce1650f4f2810d5da4fd997c49ec419ff826db5c4908f76
|
7
|
+
data.tar.gz: 40446b8b4658eac5bdf101958224d87dccc74d9b76451fe5cd16aebb2e5347bd904d34d9dcc644c6fea761a5338b6d1082fedb3c9798b923d353d3144a5928e9
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,22 +1,18 @@
|
|
1
|
-
<article style="
|
2
|
-
<header
|
1
|
+
<article style="width: 500px; margin: auto; text-align: center; padding: 5rem;">
|
2
|
+
<header>
|
3
3
|
<h1>Log in</h1>
|
4
4
|
</header>
|
5
5
|
<% if flash[:error] %>
|
6
6
|
<section>
|
7
|
-
<p
|
7
|
+
<p class="alert"><%= flash[:error] %></p>
|
8
8
|
</section>
|
9
9
|
<% end %>
|
10
10
|
<section>
|
11
|
-
<div
|
12
|
-
<%=
|
13
|
-
'/auth/developer',
|
14
|
-
style: 'padding: 1em 2em; background-color: #44f; border-radius: 3px; color: white;' %>
|
11
|
+
<div>
|
12
|
+
<%= button_to 'Log in with Developer', '/auth/developer', method: :post %>
|
15
13
|
</div>
|
16
|
-
<div
|
17
|
-
<%=
|
18
|
-
'/auth/google',
|
19
|
-
style: 'padding: 1em 2em; background-color: #f44; border-radius: 3px; color: white;' %>
|
14
|
+
<div>
|
15
|
+
<%= button_to 'Log in with Google', '/auth/google', method: :post %>
|
20
16
|
</div>
|
21
17
|
</section>
|
22
18
|
</article>
|
data/lib/intra/engine.rb
CHANGED
@@ -5,6 +5,10 @@ module Intra
|
|
5
5
|
initializer 'intra.initializer' do |app|
|
6
6
|
app.config.filter_parameters += [:uid]
|
7
7
|
app.config.middleware.use RackSession
|
8
|
+
OmniAuth.config.allowed_request_methods = [:post]
|
9
|
+
OmniAuth.config.before_request_phase do |env|
|
10
|
+
::Intra::RequestForgeryProtection.new(env).call
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
rake_tasks do
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'action_dispatch/http/request'
|
2
|
+
|
3
|
+
module Intra
|
4
|
+
# Based on ActionController::RequestForgeryProtection.
|
5
|
+
|
6
|
+
class RequestForgeryProtection
|
7
|
+
def initialize(env)
|
8
|
+
@env = env
|
9
|
+
end
|
10
|
+
|
11
|
+
def request
|
12
|
+
@_request ||= ActionDispatch::Request.new(@env)
|
13
|
+
end
|
14
|
+
|
15
|
+
def session
|
16
|
+
request.session
|
17
|
+
end
|
18
|
+
|
19
|
+
def reset_session
|
20
|
+
request.reset_session
|
21
|
+
end
|
22
|
+
|
23
|
+
def params
|
24
|
+
@_params ||= request.parameters
|
25
|
+
end
|
26
|
+
|
27
|
+
def call
|
28
|
+
verify_authenticity_token
|
29
|
+
end
|
30
|
+
|
31
|
+
def verify_authenticity_token
|
32
|
+
return if verified_request?
|
33
|
+
|
34
|
+
Intra.logger.warn "Can't verify CSRF token authenticity"
|
35
|
+
handle_unverified_request
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def protect_against_forgery?
|
41
|
+
::ApplicationController.allow_forgery_protection
|
42
|
+
end
|
43
|
+
|
44
|
+
def request_forgery_protection_token
|
45
|
+
::ApplicationController.request_forgery_protection_token
|
46
|
+
end
|
47
|
+
|
48
|
+
def forgery_protection_strategy
|
49
|
+
::ApplicationController.forgery_protection_strategy
|
50
|
+
end
|
51
|
+
|
52
|
+
def verified_request?
|
53
|
+
!protect_against_forgery? || request.get? || request.head? ||
|
54
|
+
form_authenticity_token == params[request_forgery_protection_token] ||
|
55
|
+
form_authenticity_token == request.headers['X-CSRF-Token']
|
56
|
+
end
|
57
|
+
|
58
|
+
def handle_unverified_request
|
59
|
+
forgery_protection_strategy.new(self).handle_unverified_request
|
60
|
+
end
|
61
|
+
|
62
|
+
# Sets the token value for the current session.
|
63
|
+
def form_authenticity_token
|
64
|
+
session[:_csrf_token] ||= SecureRandom.base64(32)
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/intra/version.rb
CHANGED
data/lib/intra.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: intra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Serok
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -152,6 +152,7 @@ files:
|
|
152
152
|
- lib/intra/engine.rb
|
153
153
|
- lib/intra/omniauth_failure_app.rb
|
154
154
|
- lib/intra/rack_session.rb
|
155
|
+
- lib/intra/request_forgery_protection.rb
|
155
156
|
- lib/intra/session.rb
|
156
157
|
- lib/intra/tasks/install.rake
|
157
158
|
- lib/intra/version.rb
|