diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index adfdf63c1..f513f3ea5 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -4,6 +4,16 @@ def github github_token = env["omniauth.auth"].credentials.token github_user = User.where(:github_login => github_login).first + if github_user.nil? && Errbit::Config.github_org_id + # See if they are a member of the organization that we have access for + # If they are, automatically create an account + client = client = Octokit::Client.new :access_token => github_token + org_ids = client.organizations.map { |org| org.id.to_s } + if org_ids.include? Errbit::Config.github_org_id + github_user = User.create(name: env["omniauth.auth"].extra.raw_info.name, email: env["omniauth.auth"].extra.raw_info.email) + end + end + # If user is already signed in, link github details to their account if current_user # ... unless a user is already registered with same github login diff --git a/config/initializers/_load_config.rb b/config/initializers/_load_config.rb index 7f3ab68af..650fdc43e 100644 --- a/config/initializers/_load_config.rb +++ b/config/initializers/_load_config.rb @@ -24,6 +24,7 @@ Errbit::Config.github_authentication = ENV['GITHUB_AUTHENTICATION'] Errbit::Config.github_client_id = ENV['GITHUB_CLIENT_ID'] Errbit::Config.github_secret = ENV['GITHUB_SECRET'] + Errbit::Config.github_org_id = ENV['GITHUB_ORG_ID'] if ENV['GITHUB_ORG_ID'] Errbit::Config.github_access_scope = ENV['GITHUB_ACCESS_SCOPE'].split(',').map(&:strip) if ENV['GITHUB_ACCESS_SCOPE'] Errbit::Config.smtp_settings = {