auth0 4.4.0 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 50bf71ae1695273ad9f86de42239cff42c681c8c0841fde4f2002c1e045940b0
4
- data.tar.gz: 4956b4307c7c2d93fd1d8e955c2f77fc1c6fdd57232674c1dc50a1d95507097b
3
+ metadata.gz: 8e2d0aa18336dc8b5427ef196eebe49f8232e2776c90307d1c38e2129d8704e8
4
+ data.tar.gz: acfe0224309b9b2de3faa249f65e40654586f446494b53044d27cea4ad60b5da
5
5
  SHA512:
6
- metadata.gz: 7cdbe3de507568e75af632efdd47c005c71425f0c884fb66863d63325ac5f4d162e0d129d648c306ad5747bb6d6634819431cd566420e06b87611b384f91b632
7
- data.tar.gz: cc4d1e11073b11d8412615bf57586e3f173d649ae48f47b212104de5aaca6b294d86f06eeb3bbb7f13c3016a3ef4a2f57d5e6b87b08db776e730e36e9eb1a566
6
+ metadata.gz: 194975ab5dce4b26bae48fdf25b143a7ae7ff47898e500dc0a49913bcecb54276919e79a70a8a5b2d1d064d176f15cd394bd58d26241f2388c35535ebf5614a5
7
+ data.tar.gz: 29bde6a3792287ecae9d8559e0b52ed8fc57407a183665944e1883cb3ee64dede9169a8525b191042c86b6c05a2833b34b592d60ff58ec97161d427fa4b84f49
@@ -1,42 +1,78 @@
1
1
  # Change Log
2
2
 
3
- ## [v4.4.0](https://github.com/auth0/ruby-auth0/tree/v4.4.0) (2018-02-19)
4
- [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.2.0...v4.4.0)
5
-
6
- Note: If you are using the `login` endpoint, you will need to enable the [Resource Owner Password Grant](https://auth0.com/docs/clients/client-grant-types).
3
+ ## [v4.5.0](https://github.com/auth0/ruby-auth0/tree/v4.5.0) (2018-07-26)
4
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.4.0...v4.5.0)
7
5
 
8
6
  **Closed issues:**
9
7
 
10
- - Vulnerable dependency: yard. [\#99]
11
- https://github.com/auth0/ruby-auth0/issues/99
8
+ - New version with updated rest-client dependency [\#93](https://github.com/auth0/ruby-auth0/issues/93)
9
+ - Bug?: `result` from auth0/mixins/httpproxy.rb returns 'nil' [\#88](https://github.com/auth0/ruby-auth0/issues/88)
10
+ - import\_users fails with EOFError [\#56](https://github.com/auth0/ruby-auth0/issues/56)
11
+ - Using inside of a Rails API [\#55](https://github.com/auth0/ruby-auth0/issues/55)
12
+ - Add documentation? [\#102](https://github.com/auth0/ruby-auth0/issues/102)
13
+ - logout\_url does not include client\_id parameter [\#81](https://github.com/auth0/ruby-auth0/issues/81)
14
+
15
+ **Merged pull requests:**
16
+
17
+ - Correctly default grant\_type to 'password' in login method [\#107](https://github.com/auth0/ruby-auth0/pull/107) ([psparrow](https://github.com/psparrow))
18
+ - Add additional parameters for WS-Fed URL [\#123](https://github.com/auth0/ruby-auth0/pull/123) ([joshcanhelp](https://github.com/joshcanhelp))
19
+ - Deprecate Authentication API endpoints [\#121](https://github.com/auth0/ruby-auth0/pull/121) ([joshcanhelp](https://github.com/joshcanhelp))
20
+ - Clean up auth endpoint tests [\#120](https://github.com/auth0/ruby-auth0/pull/120) ([joshcanhelp](https://github.com/joshcanhelp))
21
+ - Fix docblocks for Authentication API endpoints [\#119](https://github.com/auth0/ruby-auth0/pull/119) ([joshcanhelp](https://github.com/joshcanhelp))
22
+ - Add Client ID to logout\_url [\#118](https://github.com/auth0/ruby-auth0/pull/118) ([joshcanhelp](https://github.com/joshcanhelp))
23
+ - Add pagination and tests for Rules endpoint [\#117](https://github.com/auth0/ruby-auth0/pull/117) ([joshcanhelp](https://github.com/joshcanhelp))
24
+ - Add pagination and tests for Client Grants [\#116](https://github.com/auth0/ruby-auth0/pull/116) ([joshcanhelp](https://github.com/joshcanhelp))
25
+ - Add search\_engine parameter to Users endpoint + tests [\#115](https://github.com/auth0/ruby-auth0/pull/115) ([joshcanhelp](https://github.com/joshcanhelp))
26
+ - Improve README [\#114](https://github.com/auth0/ruby-auth0/pull/114) ([joshcanhelp](https://github.com/joshcanhelp))
27
+ - Add pagination and tests to Clients and Connections endpoints [\#113](https://github.com/auth0/ruby-auth0/pull/113) ([joshcanhelp](https://github.com/joshcanhelp))
28
+ - Use Secure RubyGems Source [\#112](https://github.com/auth0/ruby-auth0/pull/112) ([markprovan](https://github.com/markprovan))
12
29
 
13
- - Unsupported on latest ruby version. [\#83]
14
- https://github.com/auth0/ruby-auth0/issues/83
30
+ ## [v4.4.0](https://github.com/auth0/ruby-auth0/tree/v4.4.0) (2018-02-19)
31
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.3.0...v4.4.0)
32
+
33
+ **Closed issues:**
15
34
 
16
- - Outdated dependencies in ror-api example. [\#75]
17
- https://github.com/auth0/ruby-auth0/issues/75
35
+ - Authentication Login is using `/oauth/ro`. [\#89](https://github.com/auth0/ruby-auth0/issues/89)
18
36
 
19
- - Authentication Login is using `/oauth/ro` [\#89]
20
- https://github.com/auth0/ruby-auth0/issues/89
37
+ ## [v4.3.0](https://github.com/auth0/ruby-auth0/tree/v4.3.0) (2018-02-19)
38
+ [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.2.0...v4.3.0)
21
39
 
22
40
  **Merged pull requests:**
23
41
 
42
+ - Fix script publish gem [\#106](https://github.com/auth0/ruby-auth0/pull/106) ([alexisluque](https://github.com/alexisluque))
24
43
  - Add support to /api/v2/users-by-email [\#105](https://github.com/auth0/ruby-auth0/pull/105) ([edgurgel](https://github.com/edgurgel))
44
+ - Update /login to use /oauth/token [\#94](https://github.com/auth0/ruby-auth0/pull/94) ([Zensaburou](https://github.com/Zensaburou))
45
+ - Fix error in the readme regarding timeouts [\#90](https://github.com/auth0/ruby-auth0/pull/90) ([ksamc](https://github.com/ksamc))
25
46
 
26
47
  ## [v4.2.0](https://github.com/auth0/ruby-auth0/tree/v4.2.0) (2018-02-15)
27
48
  [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.1.0...v4.2.0)
28
49
 
29
50
  **Closed issues:**
30
51
 
31
- - Vulnerable dependency: yard. [\#99]
32
- https://github.com/auth0/ruby-auth0/issues/99
52
+ - Vulnerable dependency: yard [\#99](https://github.com/auth0/ruby-auth0/issues/99)
53
+ - post\_password\_change results in payload validation error [\#84](https://github.com/auth0/ruby-auth0/issues/84)
54
+ - Unsupported on latest ruby version \(2.4.0\) [\#83](https://github.com/auth0/ruby-auth0/issues/83)
55
+ - Adding a resource server breaks authentication. [\#76](https://github.com/auth0/ruby-auth0/issues/76)
56
+ - outdated dependencies in ror-api example [\#75](https://github.com/auth0/ruby-auth0/issues/75)
33
57
 
34
- - Unsupported on latest ruby version. [\#83]
35
- https://github.com/auth0/ruby-auth0/issues/83
36
-
37
- - Outdated dependencies in ror-api example. [\#75]
38
- https://github.com/auth0/ruby-auth0/issues/75
58
+ **Merged pull requests:**
39
59
 
60
+ - Add scripts and Dockerfile to publish SDK on rubygems [\#104](https://github.com/auth0/ruby-auth0/pull/104) ([alexisluque](https://github.com/alexisluque))
61
+ - Fix typo [\#103](https://github.com/auth0/ruby-auth0/pull/103) ([coisnepe](https://github.com/coisnepe))
62
+ - Fix tests [\#101](https://github.com/auth0/ruby-auth0/pull/101) ([alexisluque](https://github.com/alexisluque))
63
+ - Update outdated dependency [\#100](https://github.com/auth0/ruby-auth0/pull/100) ([alexisluque](https://github.com/alexisluque))
64
+ - Fix build [\#98](https://github.com/auth0/ruby-auth0/pull/98) ([alexisluque](https://github.com/alexisluque))
65
+ - Add delay to integration test [\#97](https://github.com/auth0/ruby-auth0/pull/97) ([alexisluque](https://github.com/alexisluque))
66
+ - Fix build [\#96](https://github.com/auth0/ruby-auth0/pull/96) ([alexisluque](https://github.com/alexisluque))
67
+ - Removed reference to API v1 [\#91](https://github.com/auth0/ruby-auth0/pull/91) ([aaguiarz](https://github.com/aaguiarz))
68
+ - Update rest-client version to v2 [\#87](https://github.com/auth0/ruby-auth0/pull/87) ([hzalaz](https://github.com/hzalaz))
69
+ - Introduce and raise exception for timeout [\#85](https://github.com/auth0/ruby-auth0/pull/85) ([anderslemke](https://github.com/anderslemke))
70
+ - corrected missing comma in example code of readme.md [\#79](https://github.com/auth0/ruby-auth0/pull/79) ([drewnichols](https://github.com/drewnichols))
71
+ - Resolve v1 API example error [\#78](https://github.com/auth0/ruby-auth0/pull/78) ([jesseproudman](https://github.com/jesseproudman))
72
+ - updated dependencies in ror api example. Fix \#75 [\#77](https://github.com/auth0/ruby-auth0/pull/77) ([Amialc](https://github.com/Amialc))
73
+ - Add a badge to documentation [\#74](https://github.com/auth0/ruby-auth0/pull/74) ([amingilani](https://github.com/amingilani))
74
+ - Typo [\#73](https://github.com/auth0/ruby-auth0/pull/73) ([amingilani](https://github.com/amingilani))
75
+ - Add how to generate documentation to the README.md + patch\_user [\#72](https://github.com/auth0/ruby-auth0/pull/72) ([ignaciojonas](https://github.com/ignaciojonas))
40
76
 
41
77
  ## [v4.1.0](https://github.com/auth0/ruby-auth0/tree/v4.1.0) (2016-07-25)
42
78
  [Full Changelog](https://github.com/auth0/ruby-auth0/compare/v4.0.0...v4.1.0)
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in auth0.gemspec
4
4
  gemspec
data/README.md CHANGED
@@ -1,76 +1,130 @@
1
- Ruby api client for [Auth0](https://auth0.com) platform
2
-
3
1
  [![Build Status](https://travis-ci.org/auth0/ruby-auth0.svg?branch=master)](https://travis-ci.org/auth0/ruby-auth0)
4
2
  [![Gem Version](https://badge.fury.io/rb/auth0.svg)](http://badge.fury.io/rb/auth0)
5
3
  [![Coverage Status](https://coveralls.io/repos/auth0/ruby-auth0/badge.svg?branch=master)](https://coveralls.io/r/auth0/ruby-auth0?branch=master)
6
- [![Dependency Status](https://gemnasium.com/auth0/ruby-auth0.svg)](https://gemnasium.com/auth0/ruby-auth0)
7
4
  [![Yard Docs](http://img.shields.io/badge/yard-docs-blue.svg)](http://www.rubydoc.info/github/auth0/ruby-auth0/master/frames)
8
5
 
6
+ Ruby API client for the [Auth0](https://auth0.com) platform.
7
+
9
8
  ## Installation
10
9
 
10
+ This gem can be installed directly:
11
+
11
12
  ``` bash
12
13
  $ gem install auth0
13
14
  ```
14
15
 
15
- or with [Bundler](http://bundler.io)
16
+ ... or with [Bundler](https://bundler.io/man/bundle-add.1.html):
16
17
 
17
- ```ruby
18
- gem 'auth0'
18
+ ```bash
19
+ bundle add auth0
19
20
  ```
20
21
 
21
- ## Basic usage
22
+ ## API Documentation
22
23
 
23
- Using [APIv2](https://auth0.com/docs/api/v2)
24
+ You can build the API documentation with the following:
24
25
 
25
- ```ruby
26
- require "auth0"
26
+ ``` bash
27
+ bundle exec rake documentation
28
+ ```
27
29
 
28
- auth0 = Auth0Client.new(
29
- :client_id => "YOUR CLIENT ID",
30
- :token => "YOUR JWT HERE",
31
- :domain => "<YOUR ACCOUNT>.auth0.com",
32
- :api_version => 2
33
- )
30
+ To view the generated documentation, open `doc/Auth0/Api.html`
34
31
 
35
- puts auth0.get_users
36
- ```
32
+ ## Management API v2
37
33
 
38
- ### Timeout
39
- You can setup a custom timeout in the Auth0Client. By default it is set to 10 seconds.
34
+ This SDK provides access to the [Management API v2](https://auth0.com/docs/api/management/v2) via modules that help create clear and accurate calls. Most of the interaction is done through the `Auth0Client` class, instantiated with the required credentials.
35
+
36
+ As a simple example of how to get started, we'll create an admin route to point to a list of all users from Auth0:
40
37
 
41
38
  ```ruby
42
- require "auth0"
39
+ # config/routes.rb
40
+ Rails.application.routes.draw do
41
+ # ...
42
+ get 'admin/users', to: 'all_users#index'
43
+ # ...
44
+ end
45
+ ```
43
46
 
44
- auth0 = Auth0Client.new(
45
- :client_id => "YOUR CLIENT ID",
46
- :token => "YOUR JWT HERE",
47
- :domain => "<YOUR ACCOUNT>.auth0.com",
48
- :timeout => 15
49
- )
47
+ ... and a Controller to handle that route:
50
48
 
51
- puts auth0.get_users
49
+ ```ruby
50
+ # app/controllers/all_users_controllers.rb
51
+ require 'auth0'
52
+
53
+ class AllUsersController < ApplicationController
54
+ # Get all users from Auth0 with "auth0" in their email.
55
+ def index
56
+ @params = {
57
+ q: "email:*auth0*",
58
+ fields: 'email,user_id,name',
59
+ include_fields: true,
60
+ page: 0,
61
+ per_page: 50
62
+ }
63
+ @users = auth0_client.users @params
64
+ end
65
+
66
+ private
67
+
68
+ # Setup the Auth0 API connection.
69
+ def auth0_client
70
+ @auth0_client ||= Auth0Client.new(
71
+ client_id: ENV['AUTH0_RUBY_CLIENT_ID'],
72
+ token: ENV['AUTH0_RUBY_API_TOKEN'],
73
+ domain: ENV['AUTH0_RUBY_DOMAIN'],
74
+ api_version: 2,
75
+ timeout: 15 # optional, defaults to 10
76
+ )
77
+ end
78
+ end
52
79
  ```
53
80
 
54
- ## API Documentation
81
+ In this example, we're using environment variables to store the values needed to connect to Auth0 and authorize. The `token` used above is an API token for the Management API with the scopes required to perform a specific action (in this case `read:users`). These tokens can be [generated manually](https://auth0.com/docs/api/management/v2/tokens#get-a-token-manually) using a test Application or with the [Application](https://manage.auth0.com/#/applications) being used for your project.
55
82
 
56
- Build API docs locally
83
+ Finally, we'll add a view to display the results:
57
84
 
58
- ``` bash
59
- bundle exec rake documentation
85
+ ```ruby
86
+ # app/views/all_users/index.html.erb
87
+ <h1>Users</h1>
88
+ <%= debug @params %>
89
+ <%= debug @users %>
60
90
  ```
61
91
 
62
- To view API docs, go to `doc` folder and open `index.html`
92
+ This should show the parameters passed to the `users` method and a list of users that matched the query (or an empty array if none).
93
+
94
+ ## Authentication
95
+
96
+ In addition to the Management API, this SDK also provides access to [Authentication API](https://auth0.com/docs/api/authentication) endpoints with the `Auth0::API::AuthenticationEndpoints` module. For basic login capability, we suggest using our OmniAuth stategy [detailed here](https://auth0.com/docs/quickstart/webapp/rails/01-login). Other authentication tasks currently supported are:
97
+
98
+ * Register a new user with a database connection using the `signup` method.
99
+ * Redirect a user to the universal login page for authentication using the `authorization_url` method.
100
+ * Log a user in to a highly trusted app with the [Resource Owner Password grant](https://auth0.com/docs/api-auth/tutorials/password-grant) using the `login` method.
101
+ * Exchange an authorization code for an access token on callback using the `obtain_user_tokens` method (see the note on state validation below).
102
+ * Send a change password email to a database connection user using the `change_password` method.
103
+ * Log a user out of Auth0 with the `logout_url` method.
104
+
105
+ **Important note on state validation**: If you choose to implement a login flow callback youself, it is important to generate and store a `state` value, pass that value to Auth0 in the `authorization_url` method, and validate it in your callback URL before calling `obtain_user_tokens`. For more information on state validation, [please see our documentation](https://auth0.com/docs/protocols/oauth2/oauth-state).
106
+
107
+ Please note that this module implements endpoints that might be deprecated for newer tenants. If you have any questions about how and when the endpoints should be used, consult the [documentation](https://auth0.com/docs/api/authentication) or ask in our [Community forums](https://community.auth0.com/tags/wordpress).
108
+
109
+
110
+ ## More Information
111
+
112
+ * [Login using OmniAuth](https://auth0.com/docs/quickstart/webapp/rails/01-login)
113
+ * [API authentication in Ruby](https://auth0.com/docs/quickstart/backend/ruby)
114
+ * [API authentication in Rails](https://auth0.com/docs/quickstart/backend/rails)
115
+ * [Managing authentication with Auth0 (blog)](https://auth0.com/blog/rails-5-with-auth0/)
116
+ * [Ruby on Rails workflow with Docker (blog)](https://auth0.com/blog/ruby-on-rails-killer-workflow-with-docker-part-1/)
63
117
 
64
118
  ## What is Auth0?
65
119
 
66
120
  Auth0 helps you to:
67
121
 
68
- * Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce, amont others**, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**.
122
+ * Add authentication with [multiple authentication sources](https://docs.auth0.com/identityproviders), either social like **Google, Facebook, Microsoft Account, LinkedIn, GitHub, Twitter, Box, Salesforce** among others, or enterprise identity systems like **Windows Azure AD, Google Apps, Active Directory, ADFS or any SAML Identity Provider**.
69
123
  * Add authentication through more traditional **[username/password databases](https://docs.auth0.com/mysql-connection-tutorial)**.
70
124
  * Add support for **[linking different user accounts](https://docs.auth0.com/link-accounts)** with the same user.
71
- * Support for generating signed [Json Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely.
72
- * Analytics of how, when and where users are logging in.
73
- * Pull data from other sources and add it to the user profile, through [JavaScript rules](https://docs.auth0.com/rules).
125
+ * Support for generating signed [JSON Web Tokens](https://docs.auth0.com/jwt) to call your APIs and **flow the user identity** securely.
126
+ * Analytics of how, when, and where users are logging in.
127
+ * Pull data from other sources and add it to the user profile with [JavaScript rules](https://docs.auth0.com/rules).
74
128
 
75
129
  ## Create a free Auth0 Account
76
130
 
@@ -79,7 +133,7 @@ Auth0 helps you to:
79
133
 
80
134
  ## Issue Reporting
81
135
 
82
- If you have found a bug or if you have a feature request, please report them at this repository issues section. Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
136
+ If you find a bug or have a feature request, please report them in this repository's [Issues tab](https://github.com/auth0/ruby-auth0/issues). Please do not report security vulnerabilities on the public GitHub issue tracker. The [Responsible Disclosure Program](https://auth0.com/whitehat) details the procedure for disclosing security issues.
83
137
 
84
138
  ## Author
85
139
 
@@ -1,14 +1,14 @@
1
1
  # rubocop:disable Metrics/ModuleLength
2
2
  module Auth0
3
3
  module Api
4
- # {https://auth0.com/docs/auth-api}
5
- # Methods to use the authentication endpoints
4
+ # {https://auth0.com/docs/api/authentication}
5
+ # Methods to use the Authentication API
6
6
  module AuthenticationEndpoints
7
7
  UP_AUTH = 'Username-Password-Authentication'.freeze
8
8
  JWT_BEARER = 'urn:ietf:params:oauth:grant-type:jwt-bearer'.freeze
9
9
 
10
- # Retrives an access token
11
- # @see https://auth0.com/docs/auth-api#!#post--oauth-access_token
10
+ # Retrieve an access token.
11
+ # @see https://auth0.com/docs/api/authentication#client-credentials
12
12
  # @param access_token [string] Social provider's access_token
13
13
  # @param connection [string] Currently, this endpoint only works for Facebook, Google, Twitter and Weibo
14
14
  # @return [json] Returns the access token
@@ -22,12 +22,12 @@ module Auth0
22
22
  end
23
23
  end
24
24
 
25
- # Gets the user tokens using the code obtained through passive authentication in the specified connection
26
- # @see https://auth0.com/docs/auth-api#!#post--oauth-access_token
25
+ # Get access and ID tokens using an Authorization Code.
26
+ # @see https://auth0.com/docs/api/authentication#authorization-code
27
+ # @param code [string] The access code obtained through passive authentication
28
+ # @param redirect_uri [string] Url to redirect after authorization
27
29
  # @param connection [string] Currently, this endpoint only works for Facebook, Google, Twitter and Weibo
28
30
  # @param scope [string] Defaults to openid. Can be 'openid name email', 'openid offline_access'
29
- # @param redirect_uri [string] Url to redirect after authorization
30
- # @param redirect_uri [string] The access code obtained through passive authentication
31
31
  # @return [json] Returns the access_token and id_token
32
32
  def obtain_user_tokens(code, redirect_uri, connection = 'facebook', scope = 'openid')
33
33
  raise Auth0::InvalidParameter, 'Must supply a valid code' if code.to_s.empty?
@@ -44,15 +44,15 @@ module Auth0
44
44
  post('/oauth/token', request_params)
45
45
  end
46
46
 
47
- # Logins using username/password
48
- # @see https://auth0.com/docs/auth-api#!#post--oauth-ro
49
- # @param username [string] Username
50
- # @param password [string] User's password
51
- # @param scope [string] Defaults to openid. Can be 'openid name email', 'openid offline_access'
47
+ # Get access and ID tokens using Resource Owner Password.
48
+ # @see https://auth0.com/docs/api/authentication#resource-owner-password
49
+ # @param username [string] Username or email
50
+ # @param password [string] Password
52
51
  # @param id_token [string] Token's id
53
- # @param connection_name [string] Connection name. Works for database connections, passwordless connections,
54
- # Active Directory/LDAP, Windows Azure AD and ADF
55
- # @return [json] Returns the access token and id token
52
+ # @param connection_name [string] Connection name; use a database or
53
+ # passwordless connection, Active Directory/LDAP, Windows Azure or ADF
54
+ # @param options [hash] Additional options - :scope, :grant_type, :device
55
+ # @return [json] Returns the access_token and id_token
56
56
  def login(username, password, id_token = nil, connection_name = UP_AUTH, options = {})
57
57
  raise Auth0::InvalidParameter, 'Must supply a valid username' if username.to_s.empty?
58
58
  raise Auth0::InvalidParameter, 'Must supply a valid password' if password.to_s.empty?
@@ -63,80 +63,180 @@ module Auth0
63
63
  password: password,
64
64
  scope: options.fetch(:scope, 'openid'),
65
65
  connection: connection_name,
66
- grant_type: options.fetch(:grant_type, password),
66
+ grant_type: options.fetch(:grant_type, 'password'),
67
67
  id_token: id_token,
68
68
  device: options.fetch(:device, nil)
69
69
  }
70
70
  post('/oauth/token', request_params)
71
71
  end
72
72
 
73
- # Signup using username/password
74
- # @see https://auth0.com/docs/auth-api#!#post--dbconnections-signup
75
- # @param email [string] User email
76
- # @param password [string] User's password
77
- # @param connection_name [string] Connection name. Works for database connections.
73
+ # Sign up with a database connection using a username and password.
74
+ # @see https://auth0.com/docs/api/authentication#signup
75
+ # @param email [string] New user's email
76
+ # @param password [string] New user's password
77
+ # @param connection_name [string] Database connection name
78
78
  # @return [json] Returns the created user
79
79
  def signup(email, password, connection_name = UP_AUTH)
80
80
  raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
81
81
  raise Auth0::InvalidParameter, 'Must supply a valid password' if password.to_s.empty?
82
82
  request_params = {
83
- client_id: @client_id,
84
83
  email: email,
84
+ password: password,
85
85
  connection: connection_name,
86
- password: password
86
+ client_id: @client_id
87
87
  }
88
88
  post('/dbconnections/signup', request_params)
89
89
  end
90
90
 
91
- # Asks to change a password for a given user.
92
- # Send an email to the user.
93
- # @see https://auth0.com/docs/auth-api#!#post--dbconnections-change_password
94
- # @param email [string] User email
95
- # @param password [string] User's new password
96
- # @param connection_name [string] Connection name. Works for database connections.
91
+ # Change a user's password or trigger a password reset email.
92
+ # @see https://auth0.com/docs/api/authentication#change-password
93
+ # @see https://auth0.com/docs/connections/database/password-change
94
+ # @param email [string] User's current email
95
+ # @param password [string] User's new password; empty to trigger a
96
+ # password reset email
97
+ # @param connection_name [string] Database connection name
97
98
  def change_password(email, password, connection_name = UP_AUTH)
98
99
  raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
99
100
  request_params = {
100
- client_id: @client_id,
101
101
  email: email,
102
+ password: password,
102
103
  connection: connection_name,
103
- password: password
104
+ client_id: @client_id
104
105
  }
105
106
  post('/dbconnections/change_password', request_params)
106
107
  end
107
108
 
108
- # Start passwordless workflow sending an email
109
- # @see https://auth0.com/docs/auth-api#!#post--with_email
110
- # @param email [string] User email
111
- # @param send [string] Defaults to 'link'. Can be 'code'. You can then authenticate with this user opening the link
112
- # @param auth_params [hash] Append/override parameters to the link (like scope, redirect_uri, protocol, etc.)
109
+ # Start Passwordless email login flow.
110
+ # @see https://auth0.com/docs/api/authentication#get-code-or-link
111
+ # @see https://auth0.com/docs/connections/passwordless#passwordless-on-regular-web-apps
112
+ # @param email [string] Email to send a link or code
113
+ # @param send [string] Pass 'link' to send a magic link, 'code' to send a code
114
+ # @param auth_params [hash] Append or override the magic link parameters
113
115
  def start_passwordless_email_flow(email, send = 'link', auth_params = {})
114
116
  raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
115
117
  request_params = {
116
- client_id: @client_id,
117
- connection: 'email',
118
118
  email: email,
119
119
  send: send,
120
- authParams: auth_params
120
+ authParams: auth_params,
121
+ connection: 'email',
122
+ client_id: @client_id
121
123
  }
122
124
  post('/passwordless/start', request_params)
123
125
  end
124
126
 
125
- # Start passwordless workflow sending a SMS message
126
- # @see https://auth0.com/docs/auth-api#!#post--with_sms
127
+ # Start Passwordless SMS login flow.
128
+ # @see https://auth0.com/docs/api/authentication#get-code-or-link
129
+ # @see https://auth0.com/docs/connections/passwordless#passwordless-on-regular-web-apps
127
130
  # @param phone_number [string] User's phone number.
128
131
  def start_passwordless_sms_flow(phone_number)
129
132
  raise Auth0::InvalidParameter, 'Must supply a valid phone number' if phone_number.to_s.empty?
130
133
  request_params = {
131
- client_id: @client_id,
134
+ phone_number: phone_number,
132
135
  connection: 'sms',
133
- phone_number: phone_number
136
+ client_id: @client_id
134
137
  }
135
138
  post('/passwordless/start', request_params)
136
139
  end
137
140
 
138
- # Logins using phone number/verification code.
139
- # @see https://auth0.com/docs/auth-api#!#post--ro_with_sms
141
+ # Retrive SAML 2.0 metadata XML for an Application.
142
+ # @see https://auth0.com/docs/api/authentication#get-metadata
143
+ # @return [xml] SAML 2.0 metadata
144
+ def saml_metadata
145
+ get("/samlp/metadata/#{@client_id}")
146
+ end
147
+
148
+ # Retrieve WS-Federation metadata XML for a tenant.
149
+ # @see https://auth0.com/docs/api/authentication#get-metadata36
150
+ # @return [xml] WS-Federation metadata
151
+ def wsfed_metadata
152
+ get('/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
153
+ end
154
+
155
+ # Return the user information based on the Auth0 access token.
156
+ # @see https://auth0.com/docs/api/authentication#get-user-info
157
+ # @return [json] User information based on the Auth0 access token
158
+ def user_info
159
+ get('/userinfo')
160
+ end
161
+
162
+ # Return an authorization URL.
163
+ # @see https://auth0.com/docs/api/authentication#authorization-code-grant
164
+ # @param redirect_uri [string] URL to redirect after authorization
165
+ # @param options [hash] Can contain response_type, connection, state and additional_parameters.
166
+ # @return [url] Authorization URL.
167
+ def authorization_url(redirect_uri, options = {})
168
+ raise Auth0::InvalidParameter, 'Must supply a valid redirect_uri' if redirect_uri.to_s.empty?
169
+ request_params = {
170
+ client_id: @client_id,
171
+ response_type: options.fetch(:response_type, 'code'),
172
+ connection: options.fetch(:connection, nil),
173
+ redirect_uri: redirect_uri,
174
+ state: options.fetch(:state, nil),
175
+ scope: options.fetch(:scope, nil)
176
+ }.merge(options.fetch(:additional_parameters, {}))
177
+
178
+ URI::HTTPS.build(host: @domain, path: '/authorize', query: to_query(request_params))
179
+ end
180
+
181
+ # Returns an Auth0 logout URL with a return URL.
182
+ # @see https://auth0.com/docs/api/authentication#logout
183
+ # @see https://auth0.com/docs/logout
184
+ # @param return_to [string] URL to redirect after logout.
185
+ # @param include_client [bool] Include the client_id in the logout URL.
186
+ # @param federated [boolean] Perform a federated logout.
187
+ # @return [url] Logout URI
188
+ def logout_url(return_to, include_client: false, federated: false)
189
+ request_params = {
190
+ returnTo: return_to,
191
+ client_id: include_client ? @client_id : nil,
192
+ federated: federated ? '1' : nil
193
+ }
194
+
195
+ URI::HTTPS.build(
196
+ host: @domain,
197
+ path: '/v2/logout',
198
+ query: to_query(request_params)
199
+ )
200
+ end
201
+
202
+ # Return a SAMLP URL.
203
+ # The SAML Request AssertionConsumerServiceURL will be used to POST back
204
+ # the assertion and it must match with the application callback URL.
205
+ # @see https://auth0.com/docs/api/authentication#accept-request
206
+ # @param connection [string] Connection to use; empty to show all
207
+ # @return [url] SAMLP URL
208
+ def samlp_url(connection = UP_AUTH)
209
+ request_params = {
210
+ connection: connection
211
+ }
212
+ URI::HTTPS.build(host: @domain, path: "/samlp/#{@client_id}", query: to_query(request_params))
213
+ end
214
+
215
+ # Return a WS-Federation URL.
216
+ # @see https://auth0.com/docs/api/authentication#accept-request35
217
+ # @param connection [string] Connection to use; empty to show all
218
+ # @param options [hash] Extra options; supports wtrealm, wctx, wreply
219
+ # @return [url] WS-Federation URL
220
+ def wsfed_url(connection = UP_AUTH, options = {})
221
+ request_params = {
222
+ whr: connection,
223
+ wtrealm: options[:wtrealm],
224
+ wctx: options[:wctx],
225
+ wreply: options[:wreply]
226
+ }
227
+
228
+ url_client_id = @client_id if !request_params[:wtrealm]
229
+ URI::HTTPS.build(
230
+ host: @domain,
231
+ path: "/wsfed/#{url_client_id}",
232
+ query: to_query(request_params)
233
+ )
234
+ end
235
+
236
+ # Login using phone number + verification code.
237
+ # @deprecated 4.5.0 - Legacy authentication pipeline; use a Password Grant
238
+ # instead - https://auth0.com/docs/api-auth/tutorials/password-grant
239
+ # @see https://auth0.com/docs/api/authentication#resource-owner
140
240
  # @param phone_number [string] User's phone number.
141
241
  # @param code [string] Verification code.
142
242
  # @return [json] Returns the access token and id token
@@ -154,23 +254,10 @@ module Auth0
154
254
  post('/oauth/ro', request_params)
155
255
  end
156
256
 
157
- # Retrives the SAML 2.0 metadata
158
- # @see https://auth0.com/docs/auth-api#!#get--samlp--client_id-
159
- # @return [xml] SAML 2.0 metadata
160
- def saml_metadata
161
- get("/samlp/metadata/#{@client_id}")
162
- end
163
-
164
- # Retrives the WS-Federation metadata
165
- # @see https://auth0.com/docs/auth-api#!#get--wsfed--client_id-
166
- # @return [xml] Federation Metadata
167
- def wsfed_metadata
168
- get('/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
169
- end
170
-
171
- # Validates a JSON Web Token (signature and expiration)
172
- # @see https://auth0.com/docs/auth-api#!#post--tokeninfo
173
- # @param id_token [string] Token's id.
257
+ # Validate a JSON Web Token (signature and expiration).
258
+ # @deprecated 4.5.0 - Legacy endpoint, use /userinfo instead.
259
+ # @see https://auth0.com/docs/api/authentication#get-token-info
260
+ # @param id_token [string] ID Token to use
174
261
  # @return User information associated with the user id (sub property) of the token.
175
262
  def token_info(id_token)
176
263
  raise Auth0::InvalidParameter, 'Must supply a valid id_token' if id_token.to_s.empty?
@@ -178,8 +265,10 @@ module Auth0
178
265
  post('/tokeninfo', request_params)
179
266
  end
180
267
 
181
- # Refreshes a delegation token
182
- # @see https://auth0.com/docs/auth-api#!#post--delegation
268
+ # Refresh a delegation token.
269
+ # @deprecated 4.5.0 - Feature is disabled, no replacement currently; see
270
+ # https://auth0.com/docs/api-auth/tutorials/adoption/delegation
271
+ # @see https://auth0.com/docs/api/authentication#delegation
183
272
  # @param refresh_token [string] Token to refresh
184
273
  # @param target [string] Target to sign the new token.
185
274
  # @param scope [string] Defaults to openid. Can be 'openid name email'.
@@ -200,8 +289,10 @@ module Auth0
200
289
  post('/delegation', request_params)
201
290
  end
202
291
 
203
- # Retrives a delegation token
204
- # @see https://auth0.com/docs/auth-api#!#post--delegation
292
+ # Retrieve a delegation token.
293
+ # @deprecated 4.5.0 - Feature is disabled, no replacement currently; see
294
+ # https://auth0.com/docs/api-auth/tutorials/adoption/delegation
295
+ # @see https://auth0.com/docs/api/authentication#delegation
205
296
  # @param id_token [string] Token's id.
206
297
  # @param target [string] Target to sign the new token.
207
298
  # @param scope [string] Defaults to openid. Can be 'openid name email'.
@@ -222,8 +313,9 @@ module Auth0
222
313
  post('/delegation', request_params)
223
314
  end
224
315
 
225
- # Retrives an impersonation URL to login as another user
226
- # @see https://auth0.com/docs/auth-api#!#post--users--user_id--impersonate
316
+ # Retrieve an impersonation URL to login as another user.
317
+ # @deprecated 4.5.0 - Feature is disabled.
318
+ # @see https://auth0.com/docs/api/authentication#impersonation
227
319
  # @param user_id [string] Impersonate user id
228
320
  # @param app_client_id [string] Application client id
229
321
  # @param impersonator_id [string] Impersonator user id id.
@@ -251,9 +343,12 @@ module Auth0
251
343
  authorization_header @token
252
344
  result
253
345
  end
346
+ # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
254
347
 
255
- # Unlinks a User
256
- # @see https://auth0.com/docs/auth-api#!#post--unlink
348
+ # Unlink a user's account from the identity provider.
349
+ # @deprecated 4.5.0 - Endpoint is disabled in favor of the Management API;
350
+ # see https://auth0.com/docs/migrations/guides/account-linking
351
+ # @see https://auth0.com/docs/api/authentication#unlink
257
352
  # @param access_token [string] Logged-in user access token
258
353
  # @param user_id [string] User Id
259
354
  def unlink_user(access_token, user_id)
@@ -266,72 +361,13 @@ module Auth0
266
361
  post('/unlink', request_params)
267
362
  end
268
363
 
269
- # Returns the user information based on the Auth0 access token.
270
- # @see https://auth0.com/docs/auth-api#!#get--userinfo
271
- # @return [json] User information based on the Auth0 access token
272
- def user_info
273
- get('/userinfo')
274
- end
275
-
276
- # Returns an authorization URL, triggers a redirect.
277
- # @see https://auth0.com/docs/auth-api#!#get--authorize_social
278
- # @param redirect_uri [string] Url to redirect after authorization
279
- # @param options [hash] Can contain response_type, connection, state and additional_parameters.
280
- # @return [url] Authorization URL.
281
- def authorization_url(redirect_uri, options = {})
282
- raise Auth0::InvalidParameter, 'Must supply a valid redirect_uri' if redirect_uri.to_s.empty?
283
- request_params = {
284
- client_id: @client_id,
285
- response_type: options.fetch(:response_type, 'code'),
286
- connection: options.fetch(:connection, nil),
287
- redirect_uri: redirect_uri,
288
- state: options.fetch(:state, nil),
289
- scope: options.fetch(:scope, nil)
290
- }.merge(options.fetch(:additional_parameters, {}))
291
-
292
- URI::HTTPS.build(host: @domain, path: '/authorize', query: to_query(request_params))
293
- end
294
-
295
- # Returns an logout URL, triggers the logout flow.
296
- # @see https://auth0.com/docs/auth-api#!#get--logout
297
- # @param return_to [string] Url to redirect after authorization
298
- # @return [url] Logout URL.
299
- def logout_url(return_to)
300
- request_params = {
301
- returnTo: return_to
302
- }
303
-
304
- URI::HTTPS.build(host: @domain, path: '/logout', query: to_query(request_params))
305
- end
306
-
307
- # Returns a samlp URL. The SAML Request AssertionConsumerServiceURL will be used to POST back the assertion
308
- # and it has to match with the application callback URL.
309
- # @see https://auth0.com/docs/auth-api#get--samlp--client_id-
310
- # @param connection [string] to login with a specific provider.
311
- # @return [url] samlp URL.
312
- def samlp_url(connection = UP_AUTH)
313
- request_params = {
314
- connection: connection
315
- }
316
- URI::HTTPS.build(host: @domain, path: "/samlp/#{@client_id}", query: to_query(request_params))
317
- end
318
-
319
- # Returns a wsfed URL.
320
- # @see https://auth0.com/docs/auth-api#get--wsfed--client_id-
321
- # @param connection [string] to login with a specific provider.
322
- # @return [url] wsfed URL.
323
- def wsfed_url(connection = UP_AUTH)
324
- request_params = {
325
- whr: connection
326
- }
327
- URI::HTTPS.build(host: @domain, path: "/wsfed/#{@client_id}", query: to_query(request_params))
328
- end
329
-
330
364
  private
331
365
 
366
+ # Build a URL query string from a hash.
332
367
  def to_query(hash)
333
- hash.map { |k, v| "#{k}=#{URI.escape(v)}" unless v.nil? }.reject(&:nil?).join('&')
368
+ hash.map { |k, v| "#{k}=#{CGI.escape(v)}" unless v.nil? }.reject(&:nil?).join('&')
334
369
  end
335
370
  end
336
371
  end
337
372
  end
373
+ # rubocop:enable Metrics/ModuleLength