Class: Nylas::Auth

Inherits:
Resource show all
Includes:
ApiOperations::Get, ApiOperations::Post
Defined in:
lib/nylas/resources/auth.rb

Overview

Auth

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sdk_instance) ⇒ Auth

Initializes Auth.



20
21
22
23
24
# File 'lib/nylas/resources/auth.rb', line 20

def initialize(sdk_instance)
  super(sdk_instance)

  @grants = Grants.new(sdk_instance)
end

Instance Attribute Details

#grantsObject (readonly)

Returns the value of attribute grants.



26
27
28
# File 'lib/nylas/resources/auth.rb', line 26

def grants
  @grants
end

Instance Method Details

#exchange_code_for_token(request) ⇒ Hash

Exchanges an authorization code for an access token.

Parameters:

  • request (Hash)

    Code exchange request.

Returns:

  • (Hash)

    Token object.



40
41
42
43
44
# File 'lib/nylas/resources/auth.rb', line 40

def exchange_code_for_token(request)
  request[:grant_type] = "authorization_code"

  execute_token_request(request)
end

#refresh_access_token(request) ⇒ Hash

Refreshes an access token.

Parameters:

  • request (Hash)

    Code exchange request.

Returns:

  • (Hash)

    Refreshed token object.



50
51
52
53
54
# File 'lib/nylas/resources/auth.rb', line 50

def refresh_access_token(request)
  request[:grant_type] = "refresh_token"

  execute_token_request(request)
end

#revoke(token) ⇒ Boolean

Revokes a single access token.

Parameters:

  • token (String)

    Access token to revoke.

Returns:

  • (Boolean)

    True if the access token was revoked successfully.



93
94
95
96
97
98
99
100
101
# File 'lib/nylas/resources/auth.rb', line 93

def revoke(token)
  post(
    path: "#{api_uri}/v3/connect/revoke",
    query_params: {
      token: token
    }
  )
  true
end

Builds the URL for admin consent authentication for Microsoft.

Parameters:

  • config (Hash)

    Configuration for the authentication request.

Returns:

  • (String)

    URL for hosted authentication.



79
80
81
82
83
84
85
86
87
# File 'lib/nylas/resources/auth.rb', line 79

def url_for_admin_consent(config)
  config_with_provider = config.merge("provider" => "microsoft")
  url = url_auth_builder(config_with_provider)

  query_params = build_query_with_admin_consent(config)
  url.query = URI.encode_www_form(query_params)

  url.to_s
end

#url_for_oauth2(config) ⇒ String

Builds the URL for authenticating users to your application with OAuth 2.0.

Parameters:

  • config (Hash)

    Configuration for building the URL.

Returns:

  • (String)

    URL for hosted authentication.



32
33
34
# File 'lib/nylas/resources/auth.rb', line 32

def url_for_oauth2(config)
  url_auth_builder(config).to_s
end

#url_for_oauth2_pkce(config) ⇒ OpenStruct

Builds the URL for authenticating users to your application with OAuth 2.0 and PKCE.

IMPORTANT: You must store the 'secret' returned to use it inside the CodeExchange flow.

Parameters:

  • config (Hash)

    Configuration for building the URL.

Returns:

  • (OpenStruct)

    URL for hosted authentication with the secret and the hashed secret.



61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/nylas/resources/auth.rb', line 61

def url_for_oauth2_pkce(config)
  url = url_auth_builder(config)

  # Generates a secret and hashes it.
  secret = SecureRandom.uuid
  secret_hash = hash_pkce_secret(secret)

  # Adds code challenge to URL generation.
  url.query = build_query_with_pkce(config, secret_hash)

  # Returns the URL with secret and hashed secret.
  OpenStruct.new(secret: secret, secret_hash: secret_hash, url: url.to_s)
end