Merge branch 'master' of github.com:ZeusWPI/Tab
This commit is contained in:
commit
5b78b1b54b
6 changed files with 63 additions and 2 deletions
10
app/controllers/callbacks_controller.rb
Normal file
10
app/controllers/callbacks_controller.rb
Normal file
|
@ -0,0 +1,10 @@
|
|||
class CallbacksController < Devise::OmniauthCallbacksController
|
||||
def zeuswpi
|
||||
@user = User.from_omniauth(request.env["omniauth.auth"])
|
||||
sign_in_and_redirect @user
|
||||
end
|
||||
|
||||
def after_omniauth_failure_path_for(scope)
|
||||
root_path
|
||||
end
|
||||
end
|
|
@ -26,4 +26,10 @@ class User < ActiveRecord::Base
|
|||
outgoing_transactions.sum(:amount)
|
||||
self.update_attribute :balance, balance
|
||||
end
|
||||
|
||||
def self.from_omniauth(auth)
|
||||
where(name: auth.uid).first_or_create do |user|
|
||||
user.name = auth.uid
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -235,7 +235,7 @@ Devise.setup do |config|
|
|||
# ==> OmniAuth
|
||||
# Add a new OmniAuth provider. Check the wiki for more information on setting
|
||||
# up on your models and hooks.
|
||||
# config.omniauth :github, 'APP_ID', 'APP_SECRET', scope: 'user,public_repo'
|
||||
config.omniauth :zeuswpi, Rails.application.secrets.omniauth_client_id, Rails.application.secrets.omniauth_client_secret
|
||||
|
||||
# ==> Warden configuration
|
||||
# If you want to use other strategies, that are not supported by Devise, or
|
||||
|
|
38
config/initializers/zeuswpi.rb
Normal file
38
config/initializers/zeuswpi.rb
Normal file
|
@ -0,0 +1,38 @@
|
|||
require 'omniauth-oauth2'
|
||||
|
||||
module OmniAuth
|
||||
module Strategies
|
||||
class Zeuswpi < OmniAuth::Strategies::OAuth2
|
||||
|
||||
option :provider_ignores_state, true
|
||||
|
||||
# Give your strategy a name.
|
||||
option :name, 'zeuswpi'
|
||||
|
||||
# This is where you pass the options you would pass when
|
||||
# initializing your consumer from the OAuth gem.
|
||||
option :client_options, {
|
||||
site: 'https://kelder.zeus.ugent.be',
|
||||
authorize_url: '/oauth/oauth2/authorize/',
|
||||
token_url: '/oauth/oauth2/token/',
|
||||
}
|
||||
|
||||
# These are called after authentication has succeeded. If
|
||||
# possible, you should try to set the UID without making
|
||||
# additional calls (if the user id is returned with the token
|
||||
# or as a URI parameter). This may not be possible with all
|
||||
# providers.
|
||||
uid{ raw_info['username'] }
|
||||
|
||||
extra do
|
||||
{
|
||||
'raw_info' => raw_info
|
||||
}
|
||||
end
|
||||
|
||||
def raw_info
|
||||
@raw_info ||= access_token.get('/oauth/api/current_user/').parsed
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,5 +1,8 @@
|
|||
Rails.application.routes.draw do
|
||||
devise_for :users
|
||||
devise_for :users, controllers: {
|
||||
omniauth_callbacks: 'callbacks'
|
||||
}
|
||||
|
||||
# The priority is based upon order of creation: first created -> highest priority.
|
||||
# See how all your routes lay out with "rake routes".
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
development:
|
||||
secret_key_base: f196861eed46b817be7402ec85f917fa19c7a2f7a4f17e1ee4c9e8f657eea809be7a56951bd0af1f339237d1bcef739f4f5206ba06d68bcbe24866a8cb1e6b5f
|
||||
omniauth_client_id: tomtest
|
||||
omniauth_client_secret: blargh
|
||||
|
||||
test:
|
||||
secret_key_base: 74b63cafd732dfbdddede69122e2735485c9b30392b068d6260495fafd3c2cd71209fc396acdd3f06ab27f63b605fd31f9e76a5e4d5d3426878cb27dccba4db1
|
||||
|
@ -20,3 +22,5 @@ test:
|
|||
# instead read values from the environment.
|
||||
production:
|
||||
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
||||
omniauth_client_id: ""
|
||||
omniauth_client_secret: ""
|
||||
|
|
Loading…
Reference in a new issue