class Conjoin::AuthToken::Middleware::Responder
Public Class Methods
new(app, env)
click to toggle source
# File lib/conjoin/auth_token.rb, line 49 def initialize(app, env) @app = app @env = env end
Public Instance Methods
respond()
click to toggle source
# File lib/conjoin/auth_token.rb, line 54 def respond if req.params['auth_token'] and (auth_token = req.params['auth_token']) and\ req.params['iv'] and (iv = Base64.decode64(req.params['iv'])) salt = Base64.decode64(req.params['salt']) if req.params['salt'] salt ||= nil obj = AuthToken.decrypt auth_token, iv, salt if Time.now < Time.parse(obj['expires_at']) user = AuthToken.settings.klass.constantize.find_by_username obj['username'] case AuthToken.settings.type.to_sym when :warden req.env['warden'].set_user(user, scope: :user) if user when :shield req.session.clear req.session[AuthToken.settings.klass] = user.id if user end res.redirect 'login?return=%2F&sso_error=1' unless user end end res.finish end
Private Instance Methods
path()
click to toggle source
# File lib/conjoin/auth_token.rb, line 92 def path @env['PATH_INFO'] end
req()
click to toggle source
# File lib/conjoin/auth_token.rb, line 96 def req @req ||= Rack::Request.new(@env) end
res()
click to toggle source
# File lib/conjoin/auth_token.rb, line 100 def res @res ||= begin status, headers, body = @app.call(req.env) Rack::Response.new(body, status, headers) end end
return_signature()
click to toggle source
# File lib/conjoin/auth_token.rb, line 82 def return_signature s3 = S3Signature.new policy_data res.status = 200 res.headers["Content-Type"] = 'application/json; charset=UTF-8' res.write({ policy: s3.policy, signature: s3.signature }.to_json) end