From 137b8450a8c083798a69a162115be9de1844ac07 Mon Sep 17 00:00:00 2001 From: bruckwubete Date: Tue, 10 Jul 2018 12:11:00 -0400 Subject: [PATCH] adding checksum. using customer name as the provider --- Gemfile.lock | 2 +- app/helpers/sessions_helper.rb | 9 ++++++++- config/application.rb | 1 + config/initializers/omniauth.rb | 1 - 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 6b6b6a11..86d206c6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/blindsidenetworks/omniauth-bn-launcher.git - revision: f7bb3dc68c418069b1f432b555ef6b35ced4ef87 + revision: 1ce59670e942e69752079772290e66cecba4f365 specs: omniauth-bn-launcher (0.1.0) omniauth (~> 1.3, >= 1.3.2) diff --git a/app/helpers/sessions_helper.rb b/app/helpers/sessions_helper.rb index fa27728c..704837a8 100644 --- a/app/helpers/sessions_helper.rb +++ b/app/helpers/sessions_helper.rb @@ -23,14 +23,21 @@ module SessionsHelper @current_user ||= User.find_by(id: session[:user_id]) end + def generate_checksum(customer_name, redirect_url, secret) + string = customer_name + redirect_url + secret + OpenSSL::Digest.digest('sha1', string).unpack("H*").first + end + def parse_customer_name(hostname) provider = hostname.split('.') provider.first == 'www' ? provider.second : provider.first end def set_omniauth_options(env) + gl_redirect_url = env["rack.url_scheme"] + "://" + env["SERVER_NAME"] + ":" + env["SERVER_PORT"] env['omniauth.strategy'].options[:customer] = parse_customer_name env["SERVER_NAME"] - env['omniauth.strategy'].options[:gl_redirect_url] = env["rack.url_scheme"] + "://" + env["SERVER_NAME"] + ":" + env["SERVER_PORT"] + env['omniauth.strategy'].options[:gl_redirect_url] = gl_redirect_url env['omniauth.strategy'].options[:default_callback_url] = Rails.configuration.gl_callback_url + env['omniauth.strategy'].options[:checksum] = generate_checksum parse_customer_name(env["SERVER_NAME"]), gl_redirect_url, Rails.configuration.launcher_secret end end diff --git a/config/application.rb b/config/application.rb index 0bb46127..8b8e363d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -25,6 +25,7 @@ module Greenlight # Fetch credentials from a loadbalancer based on provider. config.loadbalancer_endpoint = ENV["LOADBALANCER_ENDPOINT"] config.loadbalancer_secret = ENV["LOADBALANCER_SECRET"] + config.launcher_secret = ENV["LAUNCHER_SECRET"] else # Default credentials (test-install.blindsidenetworks.com/bigbluebutton). config.bigbluebutton_endpoint_default = "http://test-install.blindsidenetworks.com/bigbluebutton/api/" diff --git a/config/initializers/omniauth.rb b/config/initializers/omniauth.rb index b97b01c7..d9990423 100644 --- a/config/initializers/omniauth.rb +++ b/config/initializers/omniauth.rb @@ -7,7 +7,6 @@ Rails.application.config.providers = [:google, :twitter] Rails.application.config.omniauth_google = ENV['GOOGLE_OAUTH2_ID'].present? && ENV['GOOGLE_OAUTH2_SECRET'].present? Rails.application.config.omniauth_twitter = ENV['TWITTER_ID'].present? && ENV['TWITTER_SECRET'].present? Rails.application.config.omniauth_bn_launcher = Rails.configuration.loadbalanced_configuration -Rails.application.config.omniauth_bn_launcher = ENV["LOADBALANCER_ENDPOINT"].present? && ENV["LOADBALANCER_SECRET"].present? SETUP_PROC = lambda do |env| SessionsController.helpers.set_omniauth_options env