auth0 4.4.0 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
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