class Conjur::WebServer::Login
Attributes
sessionid[R]
Public Class Methods
new(sessionid)
click to toggle source
# File lib/conjur/webserver/login.rb, line 7 def initialize(sessionid) @sessionid = sessionid end
Public Instance Methods
call(env)
click to toggle source
# File lib/conjur/webserver/login.rb, line 11 def call(env) if sessionid = token_valid?(env) require 'conjur/authn' require 'base64' token = Conjur::Authn.authenticate api = Conjur::API.new_from_token token userid = [ Conjur.configuration.account, "user", api.username ].join(':') env["rack.session"][:sessionid] = sessionid response = Rack::Response.new(env) configuration = { account: Conjur.configuration.account, stack: Conjur.configuration.stack, appliance_url: Conjur.configuration.appliance_url, login: Conjur::Authn.get_credentials[0] } response.status = 302 response.set_cookie('conjur_configuration', value: JSON.pretty_generate(configuration), path: '/') response.set_cookie('conjur_userid', value: userid, path: '/') response['Location'] = "/ui" response.finish else [ 403, {}, ["Authorization is missing or invalid"] ] end end
Protected Instance Methods
extract_token(env)
click to toggle source
# File lib/conjur/webserver/login.rb, line 48 def extract_token(env) require 'cgi' require 'uri' query = URI.parse(env['REQUEST_URI']).query query && ( sessionid = CGI.parse(query)['sessionid'] ) && sessionid[0] end
token_valid?(env)
click to toggle source
# File lib/conjur/webserver/login.rb, line 39 def token_valid?(env) token = extract_token(env) if token == sessionid sessionid else nil end end