allow setting token manually
This commit is contained in:
parent
231f3b8723
commit
0ac265a4a7
|
@ -5,6 +5,7 @@ ENV['RAILS_ENV'] = ENV['RACK_ENV']
|
||||||
$: << 'lib'
|
$: << 'lib'
|
||||||
require 'travis/web'
|
require 'travis/web'
|
||||||
|
|
||||||
|
use Travis::Web::SetToken
|
||||||
use Travis::Web::Allow
|
use Travis::Web::Allow
|
||||||
use Travis::Web::ApiRedirect do |app|
|
use Travis::Web::ApiRedirect do |app|
|
||||||
app.settings.api_endpoint = ENV['API_ENDPOINT'] if ENV['API_ENDPOINT']
|
app.settings.api_endpoint = ENV['API_ENDPOINT'] if ENV['API_ENDPOINT']
|
||||||
|
|
|
@ -3,5 +3,6 @@ module Travis
|
||||||
autoload :Allow, 'travis/web/allow'
|
autoload :Allow, 'travis/web/allow'
|
||||||
autoload :ApiRedirect, 'travis/web/api_redirect'
|
autoload :ApiRedirect, 'travis/web/api_redirect'
|
||||||
autoload :App, 'travis/web/app'
|
autoload :App, 'travis/web/app'
|
||||||
|
autoload :SetToken, 'travis/web/set_token'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
32
lib/travis/web/set_token.rb
Normal file
32
lib/travis/web/set_token.rb
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
require 'rack/request'
|
||||||
|
require 'rack/response'
|
||||||
|
|
||||||
|
module Travis
|
||||||
|
module Web
|
||||||
|
class SetToken
|
||||||
|
attr_accessor :app, :template
|
||||||
|
|
||||||
|
def initialize(app)
|
||||||
|
@app, @template = app, File.read(__FILE__).split('__END__').last
|
||||||
|
end
|
||||||
|
|
||||||
|
def call(env)
|
||||||
|
return app.call(env) unless info = info_for(env)
|
||||||
|
Rack::Response.new(template % info).finish
|
||||||
|
end
|
||||||
|
|
||||||
|
def info_for(env)
|
||||||
|
return unless env['REQUEST_METHOD'] == 'POST'
|
||||||
|
info = Rack::Request.new(env).params.values_at('token', 'user')
|
||||||
|
info if info.first =~ /\A[a-zA-Z\-_\d]+\Z/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
__END__
|
||||||
|
<script>
|
||||||
|
sessionStorage.setItem('travis.token', %p);
|
||||||
|
sessionStorage.setItem('travis.user', %p);
|
||||||
|
window.location = '/';
|
||||||
|
</script>
|
Loading…
Reference in New Issue
Block a user