From e31fe6634ce98f3da5d0de399ffc2ebf7759a0b5 Mon Sep 17 00:00:00 2001 From: Troy Murray <troy.murray@gmail.com> Date: Sun, 28 Apr 2013 13:34:49 -0400 Subject: [PATCH] Add initial version of msunet omniauth strategy --- lib/omniauth/strategies/msunet.rb | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 lib/omniauth/strategies/msunet.rb diff --git a/lib/omniauth/strategies/msunet.rb b/lib/omniauth/strategies/msunet.rb new file mode 100644 index 0000000..6bf92f2 --- /dev/null +++ b/lib/omniauth/strategies/msunet.rb @@ -0,0 +1,62 @@ +require 'omniauth-oauth2' + +module OmniAuth + module Strategies + class Msunet < OmniAuth::Strategies::OAuth2 + option :client_options, { + :site => 'https://oauth.msu.edu', + :authorize_url => 'https://oauth.msu.edu/login/oauth/authorize', + :token_url => 'https://oauth.msu.edu/login/oauth/access_token' + } + + def request_phase + super + end + + def authorize_params + super.tap do |params| + %w[scope client_options].each do |v| + if request.params[v] + params[v.to_sym] = request.params[v] + end + end + end + end + + uid { raw_info['id'].to_s } + + info do + { + 'nickname' => raw_info['login'], + 'email' => email, + 'name' => raw_info['name'], + } + end + + extra do + {:raw_info => raw_info} + end + + def raw_info + access_token.options[:mode] = :query + @raw_info ||= access_token.get('user').parsed + end + + def email + (raw_info['email'].nil? || raw_info['email'].empty?) ? primary_email : raw_info['email'] + end + + def primary_email + primary = emails.find{|i| i['primary'] } + primary && primary['email'] || emails.first && emails.first['email'] + end + + def email_access_allowed? + options['scope'] =~ /user/ + end + + end + end +end + +OmniAuth.config.add_camelization 'msunet', 'Msunet' -- GitLab