From b24abd7328d066e74c26261320f2cd5f4bee890d Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Wed, 19 Apr 2017 00:15:29 +0200 Subject: [PATCH] Github SSO added --- Gemfile | 3 +-- Gemfile.lock | 4 ++++ .../users/omniauth_callbacks_controller.rb | 14 ++++++++++---- app/models/user.rb | 3 ++- app/views/devise/sessions/new.slim | 1 + config/initializers/devise.rb | 6 +++++- 6 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 52a9509..7d2a225 100644 --- a/Gemfile +++ b/Gemfile @@ -119,6 +119,5 @@ gem "sprockets" gem 'omniauth' gem 'omniauth-amazon' gem 'omniauth-google-oauth2' -# gem 'omniauth-github' -# gem 'omniauth-twitter' +gem 'omniauth-github' gem 'omniauth-openid' diff --git a/Gemfile.lock b/Gemfile.lock index 0de3c08..8ec9a5e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -173,6 +173,9 @@ GEM omniauth-amazon (1.0.1) omniauth (~> 1.0) omniauth-oauth2 (~> 1.1) + omniauth-github (1.2.3) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-google-oauth2 (0.4.1) jwt (~> 1.5.2) multi_json (~> 1.3) @@ -330,6 +333,7 @@ DEPENDENCIES minitest-reporters omniauth omniauth-amazon + omniauth-github omniauth-google-oauth2 omniauth-openid paperclip diff --git a/app/controllers/users/omniauth_callbacks_controller.rb b/app/controllers/users/omniauth_callbacks_controller.rb index 0205691..22de0b4 100644 --- a/app/controllers/users/omniauth_callbacks_controller.rb +++ b/app/controllers/users/omniauth_callbacks_controller.rb @@ -19,7 +19,17 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController login_via 'Amazon' end + def github + login_via 'Github' + end + + def failure + redirect_to root_path + end + def login_via(provider_name) + # TODO: log + # You need to implement the method below in your model (e.g. app/models/user.rb) @user = User.from_omniauth(request.env["omniauth.auth"]) @@ -31,8 +41,4 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController end end - def failure - redirect_to root_path - end - end diff --git a/app/models/user.rb b/app/models/user.rb index 4e65929..2d38d4b 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -14,7 +14,8 @@ class User < ApplicationRecord :launchpad, :stackexchange, :google_oauth2, - :amazon + :amazon, + :github ] diff --git a/app/views/devise/sessions/new.slim b/app/views/devise/sessions/new.slim index 1e272fc..8c05d51 100644 --- a/app/views/devise/sessions/new.slim +++ b/app/views/devise/sessions/new.slim @@ -41,6 +41,7 @@ = link_to "Sign in with StackExchange", user_stackexchange_omniauth_authorize_path = link_to "Sign in with Google", user_google_oauth2_omniauth_authorize_path = link_to "Sign in with Amazon", user_amazon_omniauth_authorize_path += link_to "Sign in with Github", user_github_omniauth_authorize_path / div / = link_to image_tag('/images/sso/google.png'), user_google_oauth2_omniauth_authorize_path diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 5aa9fc7..d9848e4 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -282,6 +282,10 @@ Devise.setup do |config| config.omniauth :open_id, name: :launchpad, identifier: 'https://login.ubuntu.com', :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}} config.omniauth :amazon, ENV['AMAZON_CLIENT_ID'], ENV['AMAZON_CLIENT_SECRET'], :client_options => {:ssl => {:ca_path => '/etc/ssl/certs'}} + {:ssl => {:ca_path => '/etc/ssl/certs'}} - # client_options: {ssl: {ca_path: '/etc/ssl/certs'}} + config.omniauth :github, ENV['GITHUB_CLIENT_ID'], ENV['GITHUB_CLIENT_SECRET'], + client_options: { + ssl: { ca_path: '/etc/ssl/certs' } + } end