summaryrefslogtreecommitdiff
path: root/lib/omni_auth
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2017-03-13 14:07:38 +0100
committerRémy Coutable <remy@rymai.me>2017-03-13 14:29:55 +0100
commitc5e34da01d6ef4717f934754c9c2d1beadd8c55e (patch)
tree0a2aabf7b1156c8f36fe273f795ea3bf2d16a38e /lib/omni_auth
parent32da7602686f2b8161175d82b121deb9e01b2db5 (diff)
downloadgitlab-ce-c5e34da01d6ef4717f934754c9c2d1beadd8c55e.tar.gz
Remove explicit `require` calls, and use `require_dependency` when needed29389-fix-already-initialized-constants
See http://guides.rubyonrails.org/autoloading_and_reloading_constants.html for more info. Signed-off-by: Rémy Coutable <remy@rymai.me>
Diffstat (limited to 'lib/omni_auth')
-rw-r--r--lib/omni_auth/strategies/bitbucket.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/omni_auth/strategies/bitbucket.rb b/lib/omni_auth/strategies/bitbucket.rb
new file mode 100644
index 00000000000..5a7d67c2390
--- /dev/null
+++ b/lib/omni_auth/strategies/bitbucket.rb
@@ -0,0 +1,41 @@
+require 'omniauth-oauth2'
+
+module OmniAuth
+ module Strategies
+ class Bitbucket < OmniAuth::Strategies::OAuth2
+ option :name, 'bitbucket'
+
+ option :client_options, {
+ site: 'https://bitbucket.org',
+ authorize_url: 'https://bitbucket.org/site/oauth2/authorize',
+ token_url: 'https://bitbucket.org/site/oauth2/access_token'
+ }
+
+ uid do
+ raw_info['username']
+ end
+
+ info do
+ {
+ name: raw_info['display_name'],
+ avatar: raw_info['links']['avatar']['href'],
+ email: primary_email
+ }
+ end
+
+ def raw_info
+ @raw_info ||= access_token.get('api/2.0/user').parsed
+ end
+
+ def primary_email
+ primary = emails.find { |i| i['is_primary'] && i['is_confirmed'] }
+ primary && primary['email'] || nil
+ end
+
+ def emails
+ email_response = access_token.get('api/2.0/user/emails').parsed
+ @emails ||= email_response && email_response['values'] || nil
+ end
+ end
+ end
+end