Class: Sorcery::Providers::Jira

Inherits:
Base
  • Object
show all
Includes:
Sorcery::Protocols::Oauth
Defined in:
lib/sorcery/providers/jira.rb

Overview

This class adds support for OAuth with Jira

config.jira.key = <key>
config.jira.secret = <secret>
...

Instance Attribute Summary collapse

Attributes inherited from Base

#access_token, #key, #original_callback_url, #secret, #state, #user_info_mapping

Instance Method Summary collapse

Methods included from Sorcery::Protocols::Oauth

#authorize_url, #get_access_token, #get_request_token, #oauth_version

Methods inherited from Base

descendants, #has_callback?, name

Constructor Details

#initializeJira

Returns a new instance of Jira.



17
18
19
20
21
22
23
24
# File 'lib/sorcery/providers/jira.rb', line 17

def initialize
  @configuration = {
      authorize_path: '/authorize',
      request_token_path: '/request-token',
      access_token_path: '/access-token'
  }
  @user_info_path = '/users/me'
end

Instance Attribute Details

#access_token_pathObject

Returns the value of attribute access_token_path.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def access_token_path
  @access_token_path
end

#authorize_pathObject

Returns the value of attribute authorize_path.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def authorize_path
  @authorize_path
end

#callback_urlObject

Returns the value of attribute callback_url.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def callback_url
  @callback_url
end

#private_key_fileObject

Returns the value of attribute private_key_file.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def private_key_file
  @private_key_file
end

#request_token_pathObject

Returns the value of attribute request_token_path.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def request_token_path
  @request_token_path
end

#signature_methodObject

Returns the value of attribute signature_method.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def signature_method
  @signature_method
end

#siteObject

Returns the value of attribute site.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def site
  @site
end

#user_info_pathObject

Returns the value of attribute user_info_path.



13
14
15
# File 'lib/sorcery/providers/jira.rb', line 13

def 
  @user_info_path
end

Instance Method Details

#get_consumerObject

Override included get_consumer method to provide authorize_path read extra configurations



28
29
30
31
32
33
34
35
36
# File 'lib/sorcery/providers/jira.rb', line 28

def get_consumer
  @configuration = @configuration.merge({
      site: site,
      signature_method: signature_method,
      consumer_key: key,
      private_key_file: private_key_file
  })
  ::OAuth::Consumer.new(@key, @secret, @configuration)
end

#get_user_hash(access_token) ⇒ Object



38
39
40
41
42
43
44
45
# File 'lib/sorcery/providers/jira.rb', line 38

def get_user_hash(access_token)
  response = access_token.get()

  {}.tap do |h|
    h[:user_info] = JSON.parse(response.body)['users'].first
    h[:uid] = user_hash[:user_info]['id'].to_s
  end
end

#login_url(params, session) ⇒ Object

calculates and returns the url to which the user should be redirected, to get authenticated at the external provider’s site.



49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/sorcery/providers/jira.rb', line 49

def (params, session)
  req_token = get_request_token
  session[:request_token]         = req_token.token
  session[:request_token_secret]  = req_token.secret

  #it was like that -> redirect_to authorize_url({ request_token: req_token.token, request_token_secret: req_token.secret })
  #for some reason Jira does not need these parameters

  get_request_token(
    session[:request_token],
    session[:request_token_secret]
  ).authorize_url
end

#process_callback(params, session) ⇒ Object

tries to login the user from access token



64
65
66
67
68
69
70
71
72
73
# File 'lib/sorcery/providers/jira.rb', line 64

def process_callback(params, session)
  args = {
    oauth_verifier:       params[:oauth_verifier],
    request_token:        session[:request_token],
    request_token_secret: session[:request_token_secret]
  }

  args.merge!({ code: params[:code] }) if params[:code]
  get_access_token(args)
end