auth0 5.4.0 → 5.7.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 +4 -4
- data/.circleci/config.yml +2 -1
- data/.gitignore +0 -1
- data/.shiprc +7 -0
- data/CHANGELOG.md +106 -30
- data/Gemfile +1 -0
- data/Gemfile.lock +233 -0
- data/README.md +10 -8
- data/auth0.gemspec +2 -1
- data/lib/auth0/api/authentication_endpoints.rb +40 -16
- data/lib/auth0/api/v2/actions.rb +210 -0
- data/lib/auth0/api/v2/attack_protection.rb +79 -0
- data/lib/auth0/api/v2/grants.rb +49 -0
- data/lib/auth0/api/v2/organizations.rb +1 -1
- data/lib/auth0/api/v2.rb +6 -0
- data/lib/auth0/exception.rb +12 -0
- data/lib/auth0/mixins/api_token_struct.rb +0 -1
- data/lib/auth0/mixins/httpproxy.rb +76 -40
- data/lib/auth0/mixins/initializer.rb +2 -3
- data/lib/auth0/mixins/token_management.rb +32 -0
- data/lib/auth0/mixins/validation.rb +1 -1
- data/lib/auth0/mixins.rb +2 -0
- data/lib/auth0/version.rb +1 -1
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_change_password/should_trigger_a_password_reset.yml +53 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_email.yml +49 -18
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_incorrect_password.yml +49 -18
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_fail_with_an_invalid_audience.yml +46 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_custom_audience.yml +49 -79
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_login_with_resource_owner/should_login_successfully_with_a_default_scope.yml +49 -80
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_saml_metadata/should_retrieve_SAML_metadata.yml +74 -21
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_fail_as_not_authorized.yml +53 -14
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_userinfo/should_return_the_userinfo.yml +106 -48
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/_wsfed_metadata/should_retrieve_WSFED_metadata.yml +62 -19
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/create_test_user.yml +57 -22
- data/spec/fixtures/vcr_cassettes/Auth0_Api_AuthenticationEndpoints/delete_test_user.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_add_token_to_blacklist/should_add_a_token_to_the_blacklist.yml +37 -19
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Blacklists/_blacklisted_tokens/should_get_the_added_token_from_the_blacklist.yml +38 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_at_least_1_result.yml +42 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_test_client_grant.yml +42 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_delete_client_grant/should_delete_the_test_client_grant.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_patch_client_grant/should_update_the_test_client_grant.yml +39 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client.yml +44 -82
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/create_test_client_grant.yml +39 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/delete_test_client_grant.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_exclude_and_include_fields_properly.yml +43 -56
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/_filters/should_include_the_specified_fields.yml +39 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_client/should_get_the_test_client.yml +43 -57
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_fields_not_specified.yml +43 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_exclude_the_specified_fields.yml +236 -96
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_include_the_specified_fields.yml +52 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/_filters/should_paginate_results.yml +39 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_clients/should_get_at_least_one_client.yml +235 -96
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_delete_client/should_delete_the_test_client_without_an_error.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/_patch_client/should_update_the_client_with_the_correct_attributes.yml +43 -57
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Clients/create_test_client.yml +45 -82
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_exclude_the_fields_indicated.yml +15 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/_filters/should_include_the_fields_indicated.yml +15 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connection/should_find_the_correct_connection.yml +15 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_include_previously-created_connection_when_filtered.yml +14 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_exclude_the_fields_indicated_from_filtered_results.yml +14 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/_filters/should_should_include_the_fields_indicated_from_filtered_results.yml +14 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_include_the_previously_created_connection.yml +15 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_connections/should_not_be_empty.yml +15 -15
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection/should_delete_the_connection.yml +15 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_delete_connection_user/should_delete_the_user_created.yml +29 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/_update_connection/should_update_the_connection.yml +15 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_connection.yml +16 -17
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Connections/create_test_user.yml +40 -32
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_credential.yml +40 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/create_test_user.yml +40 -32
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_user.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_configure_provider/should_configure_a_new_email_provider.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_delete_the_existing_email_provider_without_an_error.yml +37 -19
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_delete_provider/should_throw_an_error_trying_to_get_the_email_provider.yml +34 -16
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_with_specific_fields.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/_filters/should_get_the_existing_email_provider_without_specific_fields.yml +36 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_get_provider/should_get_the_existing_email_provider.yml +36 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/_update_provider/should_update_the_existing_email_provider.yml +36 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Emails/delete_existing_provider.yml +37 -19
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_create_an_export_users_job_successfully.yml +38 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_export_users_and_get_job/should_get_the_export_users_job.yml +76 -46
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_create_an_import_users_job_successfully.yml +46 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_import_users_and_get_job/should_get_the_import_users_job.yml +84 -48
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_create_a_new_verification_email_job.yml +77 -47
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_get_the_completed_verification_email.yml +116 -71
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/_send_verification_email_and_get_job/should_reject_an_invalid_client_id.yml +76 -39
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/delete_imported_user.yml +76 -43
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Jobs/search_for_connection_id.yml +43 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_match_the_created_log_entry.yml +224 -196
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_log/should_not_be_empty.yml +224 -196
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_fields_not_specified.yml +38 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_exclude_the_specified_fields.yml +39 -39
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_have_one_log_entry.yml +41 -40
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_filters/should_include_the_specified_fields.yml +38 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/_logs/_from/should_take_one_log_entry.yml +229 -189
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/create_test_user.yml +40 -32
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_disabled_rule.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_enabled_rule.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Logs/delete_test_user.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_delete_resource_server/should_delete_the_test_server_without_an_error.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_patch_resource_server/should_update_the_resource_server_with_the_correct_attributes.yml +39 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_server/should_get_the_test_server.yml +39 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_get_the_test_server.yml +146 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_at_least_1_result.yml +146 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/_resource_servers/should_return_the_first_page_of_one_result.yml +131 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/create_test_server.yml +40 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ResourceServers/delete_test_server.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_permissions/should_add_a_Permission_to_the_Role_successfully.yml +39 -32
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_add_role_users/should_add_a_User_to_the_Role_successfully.yml +38 -31
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_delete_role/should_delete_the_Role_successfully.yml +42 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role/should_get_the_Role_successfully.yml +38 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_exactly_1_Permission.yml +37 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_permissions/should_get_the_added_Permission_from_the_Role_successfully.yml +37 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_exactly_1_User.yml +37 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_role_users/should_get_the_added_User_from_the_Role_successfully.yml +37 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_get_roles/should_get_the_Role_successfully.yml +37 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_remove_role_permissions/should_remove_a_Permission_from_the_Role_successfully.yml +39 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/_update_role/should_update_the_Role_successfully.yml +37 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_api.yml +38 -31
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_role.yml +39 -31
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/create_test_user.yml +38 -31
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_api.yml +36 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Roles/delete_test_user.yml +36 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_disabled_rule_without_an_error.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_delete_rule/should_delete_the_test_enabled_rule_without_an_error.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_fields_not_specified.yml +40 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_exclude_the_specified_fields.yml +40 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/_filters/should_include_the_specified_fields.yml +39 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rule/should_get_a_specific_rule.yml +40 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_exclude_fields_not_specified.yml +80 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_include_the_specified_fields.yml +82 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_disabled_rule.yml +59 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_at_least_1_enabled_rule.yml +68 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/_filters/should_return_paginated_results.yml +78 -49
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_rules/should_return_at_least_1_rule.yml +84 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/_update_rule/should_update_the_disabled_rule_to_be_enabled.yml +40 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_disabled_rule.yml +42 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Rules/create_test_enabled_rule.yml +42 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_active_users/should_have_at_least_one_active_user.yml +38 -23
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Stats/_daily_stats/should_have_at_least_one_stats_entry_for_the_timeframe.yml +38 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings/should_get_the_tenant_settings.yml +72 -59
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_exclude_a_field_not_requested.yml +38 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_get_tenant_settings_with_specific_fields/should_include_the_field_requested.yml +38 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_revert_the_tenant_name.yml +72 -58
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tenants/_update_tenant_settings/should_update_the_tenant_settings_with_a_new_tenant_name.yml +72 -58
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_email_verification/should_create_an_email_verification_ticket.yml +39 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/_post_password_change/should_create_a_password_change_ticket.yml +39 -26
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/create_test_user.yml +40 -32
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Tickets/delete_test_user.yml +38 -20
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_permissions/should_add_a_Permissions_for_a_User_successfully.yml +39 -35
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_add_user_roles/should_add_a_Role_to_a_User_successfully.yml +37 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_User_successfully.yml +36 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user/should_delete_the_secondary_User_successfully.yml +36 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_delete_user_provider/should_attempt_to_delete_the_MFA_provider_for_the_User.yml +36 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_enrollments/should_get_Enrollments_for_a_User_successfully.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_exactly_1_Permission_for_a_User_successfully.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_permissions/should_get_the_correct_Permission_for_a_User_successfully.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_get_user_roles/should_get_Roles_for_a_User_successfully.yml +38 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_invalidate_browsers/should_invalidate_MFA_browsers_for_the_User_successfully.yml +36 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_link_user_account/should_link_two_Users_successfully.yml +38 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_patch_user/should_patch_the_User_successfully.yml +38 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_permissions/should_remove_a_Permission_from_a_User_successfully.yml +39 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_remove_user_roles/should_remove_a_Role_from_a_User_successfully.yml +39 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_unlink_user_account/should_unlink_two_Users_successfully.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_fields_not_indicated.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_exclude_the_fields_indicated.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/_filters/should_include_the_fields_indicated.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user/should_retrieve_the_created_user.yml +37 -28
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_user_logs/should_get_Logs_for_a_User_successfully.yml +42 -30
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v2_search_engine_query.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/is_expected_to_find_a_user_with_a_v3_search_engine_query.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_exclude_the_indicated_fields_when_paginated.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_include_the_indicated_fields_when_paginated.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_not_include_other_fields_when_paginated.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/_filters/should_return_the_correct_number_of_results_when_paginated.yml +36 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/_users/should_have_at_least_one_user.yml +37 -27
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_secondary_test_user.yml +38 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_api.yml +38 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_role.yml +39 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/create_test_user.yml +38 -29
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_api.yml +36 -24
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Users/delete_test_role.yml +42 -28
- data/spec/integration/lib/auth0/api/v2/api_client_grants_spec.rb +0 -9
- data/spec/integration/lib/auth0/api/v2/api_connections_spec.rb +3 -3
- data/spec/integration/lib/auth0/api/v2/api_email_spec.rb +0 -31
- data/spec/integration/lib/auth0/api/v2/api_jobs_spec.rb +4 -4
- data/spec/integration/lib/auth0/api/v2/api_logs_spec.rb +5 -5
- data/spec/integration/lib/auth0/api/v2/api_roles_spec.rb +3 -3
- data/spec/integration/lib/auth0/api/v2/api_tickets_spec.rb +4 -4
- data/spec/integration/lib/auth0/api/v2/api_user_blocks_spec.rb +8 -5
- data/spec/integration/lib/auth0/api/v2/api_users_spec.rb +6 -33
- data/spec/lib/auth0/api/v2/actions_spec.rb +312 -0
- data/spec/lib/auth0/api/v2/attack_protection_spec.rb +132 -0
- data/spec/lib/auth0/api/v2/blacklists_spec.rb +2 -2
- data/spec/lib/auth0/api/v2/branding_spec.rb +4 -3
- data/spec/lib/auth0/api/v2/client_grants_spec.rb +8 -8
- data/spec/lib/auth0/api/v2/clients_spec.rb +12 -12
- data/spec/lib/auth0/api/v2/connections_spec.rb +10 -10
- data/spec/lib/auth0/api/v2/device_credentials_spec.rb +4 -4
- data/spec/lib/auth0/api/v2/emails_spec.rb +2 -2
- data/spec/lib/auth0/api/v2/grants_spec.rb +91 -0
- data/spec/lib/auth0/api/v2/jobs_spec.rb +18 -17
- data/spec/lib/auth0/api/v2/log_streams_spec.rb +3 -3
- data/spec/lib/auth0/api/v2/logs_spec.rb +2 -2
- data/spec/lib/auth0/api/v2/organizations_spec.rb +13 -13
- data/spec/lib/auth0/api/v2/resource_servers_spec.rb +5 -5
- data/spec/lib/auth0/api/v2/roles_spec.rb +22 -22
- data/spec/lib/auth0/api/v2/rules_spec.rb +7 -7
- data/spec/lib/auth0/api/v2/stats_spec.rb +1 -1
- data/spec/lib/auth0/api/v2/tenants_spec.rb +1 -1
- data/spec/lib/auth0/api/v2/tickets_spec.rb +14 -14
- data/spec/lib/auth0/api/v2/user_blocks_spec.rb +2 -2
- data/spec/lib/auth0/api/v2/users_by_email_spec.rb +2 -2
- data/spec/lib/auth0/api/v2/users_spec.rb +23 -23
- data/spec/lib/auth0/client_spec.rb +3 -3
- data/spec/lib/auth0/mixins/httpproxy_spec.rb +293 -0
- data/spec/lib/auth0/mixins/initializer_spec.rb +87 -0
- data/spec/lib/auth0/mixins/token_management_spec.rb +125 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/dummy_class_for_proxy.rb +1 -0
- data/spec/support/dummy_class_for_tokens.rb +17 -0
- metadata +35 -25
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_check_if_ip_is_blocked/should_return_200_response_code.yml +0 -65
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_Anomaly/_remove_ip_block/should_remove_an_IP_successfully.yml +0 -60
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_ClientGrants/_client_grants/should_return_the_first_page_of_one_result.yml +0 -66
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_delete_device_credential/should_delete_the_test_credential_without_an_error.yml +0 -54
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/_filter_by_type/should_exclude_the_test_credential.yml +0 -59
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_have_at_least_1_entry.yml +0 -62
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/_device_credentials/should_include_the_test_credential.yml +0 -62
- data/spec/fixtures/vcr_cassettes/Auth0_Api_V2_DeviceCredentials/delete_test_credential.yml +0 -54
- data/spec/integration/lib/auth0/api/v2/api_anomaly_spec.rb +0 -17
- data/spec/integration/lib/auth0/api/v2/api_device_credentials_spec.rb +0 -128
data/Gemfile.lock
ADDED
@@ -0,0 +1,233 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
auth0 (5.7.0)
|
5
|
+
addressable (~> 2.8)
|
6
|
+
jwt (~> 2.2)
|
7
|
+
rest-client (~> 2.1)
|
8
|
+
retryable (~> 3.0)
|
9
|
+
zache (~> 0.12)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
actionpack (7.0.2.2)
|
15
|
+
actionview (= 7.0.2.2)
|
16
|
+
activesupport (= 7.0.2.2)
|
17
|
+
rack (~> 2.0, >= 2.2.0)
|
18
|
+
rack-test (>= 0.6.3)
|
19
|
+
rails-dom-testing (~> 2.0)
|
20
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
21
|
+
actionview (7.0.2.2)
|
22
|
+
activesupport (= 7.0.2.2)
|
23
|
+
builder (~> 3.1)
|
24
|
+
erubi (~> 1.4)
|
25
|
+
rails-dom-testing (~> 2.0)
|
26
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
27
|
+
activesupport (7.0.2.2)
|
28
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
29
|
+
i18n (>= 1.6, < 2)
|
30
|
+
minitest (>= 5.1)
|
31
|
+
tzinfo (~> 2.0)
|
32
|
+
addressable (2.8.0)
|
33
|
+
public_suffix (>= 2.0.2, < 5.0)
|
34
|
+
ast (2.4.2)
|
35
|
+
builder (3.2.4)
|
36
|
+
codecov (0.6.0)
|
37
|
+
simplecov (>= 0.15, < 0.22)
|
38
|
+
coderay (1.1.3)
|
39
|
+
concurrent-ruby (1.1.9)
|
40
|
+
coveralls (0.7.1)
|
41
|
+
multi_json (~> 1.3)
|
42
|
+
rest-client
|
43
|
+
simplecov (>= 0.7)
|
44
|
+
term-ansicolor
|
45
|
+
thor
|
46
|
+
crack (0.4.5)
|
47
|
+
rexml
|
48
|
+
crass (1.0.6)
|
49
|
+
diff-lcs (1.5.0)
|
50
|
+
docile (1.4.0)
|
51
|
+
domain_name (0.5.20190701)
|
52
|
+
unf (>= 0.0.5, < 1.0.0)
|
53
|
+
dotenv (2.7.6)
|
54
|
+
dotenv-rails (2.7.6)
|
55
|
+
dotenv (= 2.7.6)
|
56
|
+
railties (>= 3.2)
|
57
|
+
erubi (1.10.0)
|
58
|
+
faker (2.19.0)
|
59
|
+
i18n (>= 1.6, < 2)
|
60
|
+
ffi (1.15.5)
|
61
|
+
formatador (1.1.0)
|
62
|
+
fuubar (2.5.1)
|
63
|
+
rspec-core (~> 3.0)
|
64
|
+
ruby-progressbar (~> 1.4)
|
65
|
+
gem-release (0.7.4)
|
66
|
+
guard (2.17.0)
|
67
|
+
formatador (>= 0.2.4)
|
68
|
+
listen (>= 2.7, < 4.0)
|
69
|
+
lumberjack (>= 1.0.12, < 2.0)
|
70
|
+
nenv (~> 0.1)
|
71
|
+
notiffany (~> 0.0)
|
72
|
+
pry (>= 0.9.12)
|
73
|
+
shellany (~> 0.0)
|
74
|
+
thor (>= 0.18.1)
|
75
|
+
guard-compat (1.2.1)
|
76
|
+
guard-rspec (4.7.3)
|
77
|
+
guard (~> 2.1)
|
78
|
+
guard-compat (~> 1.1)
|
79
|
+
rspec (>= 2.99.0, < 4.0)
|
80
|
+
hashdiff (1.0.1)
|
81
|
+
http-accept (1.7.0)
|
82
|
+
http-cookie (1.0.4)
|
83
|
+
domain_name (~> 0.5)
|
84
|
+
i18n (1.10.0)
|
85
|
+
concurrent-ruby (~> 1.0)
|
86
|
+
jwt (2.3.0)
|
87
|
+
listen (3.7.1)
|
88
|
+
rb-fsevent (~> 0.10, >= 0.10.3)
|
89
|
+
rb-inotify (~> 0.9, >= 0.9.10)
|
90
|
+
loofah (2.14.0)
|
91
|
+
crass (~> 1.0.2)
|
92
|
+
nokogiri (>= 1.5.9)
|
93
|
+
lumberjack (1.2.8)
|
94
|
+
method_source (0.9.2)
|
95
|
+
mime-types (3.4.1)
|
96
|
+
mime-types-data (~> 3.2015)
|
97
|
+
mime-types-data (3.2022.0105)
|
98
|
+
mini_portile2 (2.7.1)
|
99
|
+
minitest (5.15.0)
|
100
|
+
multi_json (1.15.0)
|
101
|
+
nenv (0.3.0)
|
102
|
+
netrc (0.11.0)
|
103
|
+
nokogiri (1.13.1)
|
104
|
+
mini_portile2 (~> 2.7.0)
|
105
|
+
racc (~> 1.4)
|
106
|
+
notiffany (0.1.3)
|
107
|
+
nenv (~> 0.1)
|
108
|
+
shellany (~> 0.0)
|
109
|
+
parallel (1.21.0)
|
110
|
+
parser (3.1.0.0)
|
111
|
+
ast (~> 2.4.1)
|
112
|
+
pry (0.12.2)
|
113
|
+
coderay (~> 1.1.0)
|
114
|
+
method_source (~> 0.9.0)
|
115
|
+
pry-nav (0.3.0)
|
116
|
+
pry (>= 0.9.10, < 0.13.0)
|
117
|
+
public_suffix (4.0.6)
|
118
|
+
racc (1.6.0)
|
119
|
+
rack (2.2.3)
|
120
|
+
rack-test (0.8.3)
|
121
|
+
rack (>= 1.0, < 3)
|
122
|
+
rails-dom-testing (2.0.3)
|
123
|
+
activesupport (>= 4.2.0)
|
124
|
+
nokogiri (>= 1.6)
|
125
|
+
rails-html-sanitizer (1.4.2)
|
126
|
+
loofah (~> 2.3)
|
127
|
+
railties (7.0.2.2)
|
128
|
+
actionpack (= 7.0.2.2)
|
129
|
+
activesupport (= 7.0.2.2)
|
130
|
+
method_source
|
131
|
+
rake (>= 12.2)
|
132
|
+
thor (~> 1.0)
|
133
|
+
zeitwerk (~> 2.5)
|
134
|
+
rainbow (3.1.1)
|
135
|
+
rake (13.0.6)
|
136
|
+
rb-fsevent (0.11.1)
|
137
|
+
rb-inotify (0.10.1)
|
138
|
+
ffi (~> 1.0)
|
139
|
+
regexp_parser (2.2.1)
|
140
|
+
rest-client (2.1.0)
|
141
|
+
http-accept (>= 1.7.0, < 2.0)
|
142
|
+
http-cookie (>= 1.0.2, < 2.0)
|
143
|
+
mime-types (>= 1.16, < 4.0)
|
144
|
+
netrc (~> 0.8)
|
145
|
+
retryable (3.0.5)
|
146
|
+
rexml (3.2.5)
|
147
|
+
rspec (3.11.0)
|
148
|
+
rspec-core (~> 3.11.0)
|
149
|
+
rspec-expectations (~> 3.11.0)
|
150
|
+
rspec-mocks (~> 3.11.0)
|
151
|
+
rspec-core (3.11.0)
|
152
|
+
rspec-support (~> 3.11.0)
|
153
|
+
rspec-expectations (3.11.0)
|
154
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
155
|
+
rspec-support (~> 3.11.0)
|
156
|
+
rspec-mocks (3.11.0)
|
157
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
158
|
+
rspec-support (~> 3.11.0)
|
159
|
+
rspec-support (3.11.0)
|
160
|
+
rubocop (1.25.1)
|
161
|
+
parallel (~> 1.10)
|
162
|
+
parser (>= 3.1.0.0)
|
163
|
+
rainbow (>= 2.2.2, < 4.0)
|
164
|
+
regexp_parser (>= 1.8, < 3.0)
|
165
|
+
rexml
|
166
|
+
rubocop-ast (>= 1.15.1, < 2.0)
|
167
|
+
ruby-progressbar (~> 1.7)
|
168
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
169
|
+
rubocop-ast (1.15.2)
|
170
|
+
parser (>= 3.0.1.1)
|
171
|
+
rubocop-rails (2.13.2)
|
172
|
+
activesupport (>= 4.2.0)
|
173
|
+
rack (>= 1.1)
|
174
|
+
rubocop (>= 1.7.0, < 2.0)
|
175
|
+
ruby-progressbar (1.11.0)
|
176
|
+
shellany (0.0.1)
|
177
|
+
simplecov (0.21.2)
|
178
|
+
docile (~> 1.1)
|
179
|
+
simplecov-html (~> 0.11)
|
180
|
+
simplecov_json_formatter (~> 0.1)
|
181
|
+
simplecov-html (0.12.3)
|
182
|
+
simplecov_json_formatter (0.1.4)
|
183
|
+
sync (0.5.0)
|
184
|
+
term-ansicolor (1.7.1)
|
185
|
+
tins (~> 1.0)
|
186
|
+
terminal-notifier-guard (1.7.0)
|
187
|
+
thor (1.2.1)
|
188
|
+
timecop (0.9.4)
|
189
|
+
tins (1.31.0)
|
190
|
+
sync
|
191
|
+
tzinfo (2.0.4)
|
192
|
+
concurrent-ruby (~> 1.0)
|
193
|
+
unf (0.1.4)
|
194
|
+
unf_ext
|
195
|
+
unf_ext (0.0.8)
|
196
|
+
unicode-display_width (2.1.0)
|
197
|
+
vcr (6.0.0)
|
198
|
+
webmock (3.14.0)
|
199
|
+
addressable (>= 2.8.0)
|
200
|
+
crack (>= 0.3.2)
|
201
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
202
|
+
zache (0.12.0)
|
203
|
+
zeitwerk (2.5.4)
|
204
|
+
|
205
|
+
PLATFORMS
|
206
|
+
ruby
|
207
|
+
|
208
|
+
DEPENDENCIES
|
209
|
+
auth0!
|
210
|
+
bundler
|
211
|
+
codecov
|
212
|
+
coveralls
|
213
|
+
dotenv-rails (~> 2.0)
|
214
|
+
faker (~> 2.0)
|
215
|
+
fuubar (~> 2.0)
|
216
|
+
gem-release (~> 0.7)
|
217
|
+
guard-rspec (~> 4.5)
|
218
|
+
pry (~> 0.10)
|
219
|
+
pry-nav (~> 0.2)
|
220
|
+
rack (~> 2.1)
|
221
|
+
rack-test (~> 0.6)
|
222
|
+
rake (~> 13.0)
|
223
|
+
rspec (~> 3.5)
|
224
|
+
rubocop
|
225
|
+
rubocop-rails
|
226
|
+
simplecov
|
227
|
+
terminal-notifier-guard
|
228
|
+
timecop
|
229
|
+
vcr
|
230
|
+
webmock
|
231
|
+
|
232
|
+
BUNDLED WITH
|
233
|
+
1.17.2
|
data/README.md
CHANGED
@@ -77,6 +77,10 @@ class AllUsersController < ApplicationController
|
|
77
77
|
# Otherwise, you can pass in a Management API token directly for testing or temporary
|
78
78
|
# access using the key below.
|
79
79
|
# token: ENV['AUTH0_RUBY_API_TOKEN'],
|
80
|
+
#
|
81
|
+
# When passing a token, you can also specify when the token expires in seconds from epoch. Otherwise, expiry is set
|
82
|
+
# by default to an hour from now.
|
83
|
+
# token_expires_at: Time.now.to_i + 86400,
|
80
84
|
domain: ENV['AUTH0_RUBY_DOMAIN'],
|
81
85
|
api_version: 2,
|
82
86
|
timeout: 15 # optional, defaults to 10
|
@@ -98,6 +102,12 @@ Finally, we'll add a view to display the results:
|
|
98
102
|
|
99
103
|
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).
|
100
104
|
|
105
|
+
### Token management
|
106
|
+
|
107
|
+
If `token` is omitted, the SDK will attempt to fetch a new token using the `client_credentials` grant, provided that `client_id` and `client_secret` are provided in the configuration. Once the token is about to expire (or has already expired), a new token will be fetched and cached for future calls.
|
108
|
+
|
109
|
+
For this to work, ensure your application can make a Client Credentials grant (Application settings in Auth0 > Advanced > Grant Types tab) and that the application is authorized for the Management API: https://auth0.com/docs/api-auth/config/using-the-auth0-dashboard
|
110
|
+
|
101
111
|
## Authentication
|
102
112
|
|
103
113
|
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:
|
@@ -117,14 +127,6 @@ Please note that this module implements endpoints that might be deprecated for n
|
|
117
127
|
|
118
128
|
[Organizations](https://auth0.com/docs/organizations) is a set of features that provide better support for developers who build and maintain SaaS and Business-to-Business (B2B) applications.
|
119
129
|
|
120
|
-
Using Organizations, you can:
|
121
|
-
|
122
|
-
- Represent teams, business customers, partner companies, or any logical grouping of users that should have different ways of accessing your applications, as organizations.
|
123
|
-
- Manage their membership in a variety of ways, including user invitation.
|
124
|
-
- Configure branded, federated login flows for each organization.
|
125
|
-
- Implement role-based access control, such that users can have different roles when authenticating in the context of different organizations.
|
126
|
-
- Build administration capabilities into your products, using Organizations APIs, so that those businesses can manage their own organizations.
|
127
|
-
|
128
130
|
Note that Organizations is currently only available to customers on our Enterprise and Startup subscription plans.
|
129
131
|
|
130
132
|
#### Logging in with an Organization
|
data/auth0.gemspec
CHANGED
@@ -16,10 +16,11 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
|
19
|
-
s.add_runtime_dependency 'rest-client', '~> 2.
|
19
|
+
s.add_runtime_dependency 'rest-client', '~> 2.1'
|
20
20
|
s.add_runtime_dependency 'jwt', '~> 2.2'
|
21
21
|
s.add_runtime_dependency 'zache', '~> 0.12'
|
22
22
|
s.add_runtime_dependency 'addressable', '~> 2.8'
|
23
|
+
s.add_runtime_dependency 'retryable', '~> 3.0'
|
23
24
|
|
24
25
|
s.add_development_dependency 'bundler'
|
25
26
|
s.add_development_dependency 'rake', '~> 13.0'
|
@@ -22,16 +22,14 @@ module Auth0
|
|
22
22
|
organization: @organization,
|
23
23
|
audience: nil
|
24
24
|
)
|
25
|
-
|
26
25
|
request_params = {
|
27
26
|
grant_type: 'client_credentials',
|
28
27
|
client_id: client_id,
|
29
28
|
client_secret: client_secret,
|
30
|
-
audience: audience
|
31
|
-
organization: organization
|
29
|
+
audience: audience
|
32
30
|
}
|
33
31
|
|
34
|
-
response = post
|
32
|
+
response = request_with_retry(:post, '/oauth/token', request_params)
|
35
33
|
::Auth0::ApiToken.new(response['access_token'], response['scope'], response['expires_in'])
|
36
34
|
end
|
37
35
|
|
@@ -58,7 +56,7 @@ module Auth0
|
|
58
56
|
code: code,
|
59
57
|
redirect_uri: redirect_uri
|
60
58
|
}
|
61
|
-
::Auth0::AccessToken.from_response post
|
59
|
+
::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
|
62
60
|
end
|
63
61
|
|
64
62
|
# Get access and ID tokens using a refresh token.
|
@@ -83,7 +81,7 @@ module Auth0
|
|
83
81
|
client_secret: client_secret,
|
84
82
|
refresh_token: refresh_token
|
85
83
|
}
|
86
|
-
::Auth0::AccessToken.from_response post
|
84
|
+
::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
|
87
85
|
end
|
88
86
|
|
89
87
|
# rubocop:disable Metrics/ParameterLists
|
@@ -123,7 +121,7 @@ module Auth0
|
|
123
121
|
audience: audience,
|
124
122
|
grant_type: realm ? 'http://auth0.com/oauth/grant-type/password-realm' : 'password'
|
125
123
|
}
|
126
|
-
::Auth0::AccessToken.from_response post
|
124
|
+
::Auth0::AccessToken.from_response request_with_retry(:post, '/oauth/token', request_params)
|
127
125
|
end
|
128
126
|
# rubocop:enable Metrics/ParameterLists
|
129
127
|
|
@@ -143,16 +141,18 @@ module Auth0
|
|
143
141
|
connection: connection_name,
|
144
142
|
client_id: @client_id
|
145
143
|
}
|
146
|
-
|
144
|
+
|
145
|
+
request_with_retry(:post, '/dbconnections/signup', request_params)
|
147
146
|
end
|
148
147
|
|
149
148
|
# Change a user's password or trigger a password reset email.
|
150
149
|
# @see https://auth0.com/docs/api/authentication#change-password
|
151
150
|
# @see https://auth0.com/docs/connections/database/password-change
|
152
151
|
# @param email [string] User's current email
|
153
|
-
# @param password [string] User's new password
|
154
|
-
# password
|
152
|
+
# @param password [string] User's new password. This is only available
|
153
|
+
# on legacy tenants with change password v1 flow enabled
|
155
154
|
# @param connection_name [string] Database connection name
|
155
|
+
# @deprecated Use {#password_reset} instead.
|
156
156
|
def change_password(email, password, connection_name = UP_AUTH)
|
157
157
|
raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
|
158
158
|
|
@@ -162,7 +162,29 @@ module Auth0
|
|
162
162
|
connection: connection_name,
|
163
163
|
client_id: @client_id
|
164
164
|
}
|
165
|
-
|
165
|
+
|
166
|
+
request_with_retry(:post, '/dbconnections/change_password', request_params)
|
167
|
+
end
|
168
|
+
|
169
|
+
# Trigger a password reset email.
|
170
|
+
# @see https://auth0.com/docs/api/authentication#change-password
|
171
|
+
# @see https://auth0.com/docs/connections/database/password-change
|
172
|
+
# @param email [string] User's current email
|
173
|
+
# @param password [string] User's new password; empty to trigger a
|
174
|
+
# password reset email
|
175
|
+
# @param connection_name [string] Database connection name
|
176
|
+
# @param client_id [string] Client ID override (to allow forwarding
|
177
|
+
# to a different application's login URI on password reset success page)
|
178
|
+
def reset_password(email, connection_name = UP_AUTH, client_id = @client_id)
|
179
|
+
raise Auth0::InvalidParameter, 'Must supply a valid email' if email.to_s.empty?
|
180
|
+
|
181
|
+
request_params = {
|
182
|
+
email: email,
|
183
|
+
connection: connection_name,
|
184
|
+
client_id: client_id
|
185
|
+
}
|
186
|
+
|
187
|
+
request_with_retry(:post, '/dbconnections/change_password', request_params)
|
166
188
|
end
|
167
189
|
|
168
190
|
# Start Passwordless email login flow.
|
@@ -182,7 +204,8 @@ module Auth0
|
|
182
204
|
client_id: @client_id,
|
183
205
|
client_secret: @client_secret
|
184
206
|
}
|
185
|
-
|
207
|
+
|
208
|
+
request_with_retry(:post, '/passwordless/start', request_params)
|
186
209
|
end
|
187
210
|
|
188
211
|
# Start Passwordless SMS login flow.
|
@@ -198,28 +221,29 @@ module Auth0
|
|
198
221
|
client_id: @client_id,
|
199
222
|
client_secret: @client_secret
|
200
223
|
}
|
201
|
-
|
224
|
+
|
225
|
+
request_with_retry(:post, '/passwordless/start', request_params)
|
202
226
|
end
|
203
227
|
|
204
228
|
# Retrive SAML 2.0 metadata XML for an Application.
|
205
229
|
# @see https://auth0.com/docs/api/authentication#get-metadata
|
206
230
|
# @return [xml] SAML 2.0 metadata
|
207
231
|
def saml_metadata
|
208
|
-
get
|
232
|
+
request_with_retry(:get, "/samlp/metadata/#{@client_id}")
|
209
233
|
end
|
210
234
|
|
211
235
|
# Retrieve WS-Federation metadata XML for a tenant.
|
212
236
|
# @see https://auth0.com/docs/api/authentication#get-metadata36
|
213
237
|
# @return [xml] WS-Federation metadata
|
214
238
|
def wsfed_metadata
|
215
|
-
get
|
239
|
+
request_with_retry(:get, '/wsfed/FederationMetadata/2007-06/FederationMetadata.xml')
|
216
240
|
end
|
217
241
|
|
218
242
|
# Return the user information based on the Auth0 access token.
|
219
243
|
# @see https://auth0.com/docs/api/authentication#get-user-info
|
220
244
|
# @return [json] User information based on the Auth0 access token
|
221
245
|
def userinfo(access_token)
|
222
|
-
get
|
246
|
+
request_with_retry(:get, '/userinfo', {}, 'Authorization' => "Bearer #{access_token}")
|
223
247
|
end
|
224
248
|
|
225
249
|
# Return an authorization URL.
|
@@ -0,0 +1,210 @@
|
|
1
|
+
module Auth0
|
2
|
+
module Api
|
3
|
+
module V2
|
4
|
+
# Methods to use the actions endpoints
|
5
|
+
module Actions
|
6
|
+
include Auth0::Mixins::Validation
|
7
|
+
|
8
|
+
attr_reader :actions_path
|
9
|
+
|
10
|
+
# Get all actions.
|
11
|
+
# @see https://auth0.com/docs/api/management/v2#!/Actions/get_actions
|
12
|
+
# @param trigger_id [string] An actions extensibility point.
|
13
|
+
# @param action_name [string] The name of the action to retrieve.
|
14
|
+
# @param deployed [boolean] filter to only retrieve actions that are deployed.
|
15
|
+
# @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
|
16
|
+
# @param page [integer] The page number. Zero based.
|
17
|
+
# @param installed [boolean] When true, return only installed actions. When false, return only custom actions. Returns all actions by default.
|
18
|
+
# @return [json] Actions and pagination info
|
19
|
+
def actions(trigger_id, action_name, deployed: nil, per_page: nil, page: nil, installed: nil)
|
20
|
+
raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
|
21
|
+
raise Auth0::MissingActionName, 'Must supply a valid action_name' if action_name.to_s.empty?
|
22
|
+
|
23
|
+
request_params = {
|
24
|
+
trigger_id: trigger_id,
|
25
|
+
action_name: action_name,
|
26
|
+
deployed: deployed,
|
27
|
+
per_page: per_page,
|
28
|
+
page: page,
|
29
|
+
installed: installed
|
30
|
+
}
|
31
|
+
path = "#{actions_path}/actions"
|
32
|
+
get(path, request_params)
|
33
|
+
end
|
34
|
+
alias get_actions actions
|
35
|
+
|
36
|
+
# Create a new action.
|
37
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/post_action
|
38
|
+
# @param body [hash] See https://auth0.com/docs/api/management/v2/#!/actions/post_action for available options
|
39
|
+
# @return [json] Returns the created action.
|
40
|
+
def create_action(body = {})
|
41
|
+
post(actions_path, body)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Retrieve the set of triggers currently available within actions. A trigger is an extensibility point to which actions can be bound.
|
45
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/get_triggers
|
46
|
+
#
|
47
|
+
# @return [json] Returns triggers of the action
|
48
|
+
def actions_triggers
|
49
|
+
path = "#{actions_path}/triggers"
|
50
|
+
get(path)
|
51
|
+
end
|
52
|
+
|
53
|
+
# Get an action by id.
|
54
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/get_action
|
55
|
+
# @param action_id [string] The action_id of the user to retrieve.
|
56
|
+
#
|
57
|
+
# @return [json] Returns the action with the given action_id if it exists.
|
58
|
+
def action(action_id)
|
59
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
60
|
+
path = "#{actions_path}/actions/#{action_id}"
|
61
|
+
get(path)
|
62
|
+
end
|
63
|
+
alias get_action action
|
64
|
+
|
65
|
+
|
66
|
+
# Deletes a single action given its id
|
67
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/delete_action
|
68
|
+
# @param action_id [string] The action ID
|
69
|
+
# @param force [boolean] Force action deletion detaching bindings (defaults to false)
|
70
|
+
def delete_action(action_id, force=false)
|
71
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
72
|
+
path = "#{actions_path}/actions/#{action_id}"
|
73
|
+
delete(path, { force: force })
|
74
|
+
end
|
75
|
+
|
76
|
+
# Update an existing action.
|
77
|
+
# @see https://auth0.com/docs/api/management/v2/#!/Actions/patch_action
|
78
|
+
# @param action_id [string] The action ID
|
79
|
+
# @param body [hash] The optional parameters to update.
|
80
|
+
#
|
81
|
+
# @return [json] Returns the updated user.
|
82
|
+
def patch_action(action_id, body)
|
83
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
84
|
+
raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
|
85
|
+
path = "#{actions_path}/actions/#{action_id}"
|
86
|
+
patch(path, body)
|
87
|
+
end
|
88
|
+
alias update_action patch_action
|
89
|
+
|
90
|
+
# Retrieve information about a specific execution of a trigger.
|
91
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/get_action
|
92
|
+
# @param execution_id [string] The ID of the exeution to retrieve.
|
93
|
+
#
|
94
|
+
# @return [json] Returns the action with the given execution_id if it exists.
|
95
|
+
def execution(execution_id)
|
96
|
+
raise Auth0::MissingExecutionId, 'Must supply a valid execution_id' if execution_id.to_s.empty?
|
97
|
+
path = "#{actions_path}/executions/#{execution_id}"
|
98
|
+
get(path)
|
99
|
+
end
|
100
|
+
alias get_execution execution
|
101
|
+
|
102
|
+
# Retrieve all of an action's versions.
|
103
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/versions
|
104
|
+
# @param action_id [string] The ID of the action.
|
105
|
+
# @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
|
106
|
+
# @param page [integer] The page number. Zero based
|
107
|
+
#
|
108
|
+
# @return [json] Returns the action with the given execution_id if it exists.
|
109
|
+
def actions_versions(action_id, page: nil, per_page: nil)
|
110
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
111
|
+
path = "#{actions_path}/actions/#{action_id}/versions"
|
112
|
+
request_params = {
|
113
|
+
per_page: per_page,
|
114
|
+
page: page
|
115
|
+
}
|
116
|
+
|
117
|
+
get(path, request_params)
|
118
|
+
end
|
119
|
+
alias get_actions_versions actions_versions
|
120
|
+
|
121
|
+
# Retrieve the actions that are bound to a trigger.
|
122
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/get_bindings
|
123
|
+
# @param trigger_id [string] An actions extensibility point.
|
124
|
+
# @param per_page [integer] The amount of entries per page. Default: 50. Max value: 100.
|
125
|
+
# @param page [integer] The page number. Zero based
|
126
|
+
#
|
127
|
+
# @return [json] Returns the action with the given trigger_id if it exists.
|
128
|
+
def trigger_bindings(trigger_id, page: nil, per_page: nil)
|
129
|
+
raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
|
130
|
+
path = "#{actions_path}/triggers/#{trigger_id}/bindings"
|
131
|
+
request_params = {
|
132
|
+
per_page: per_page,
|
133
|
+
page: page
|
134
|
+
}
|
135
|
+
|
136
|
+
get(path, request_params)
|
137
|
+
end
|
138
|
+
alias get_trigger_bindings trigger_bindings
|
139
|
+
|
140
|
+
# Update the actions that are bound (i.e. attached) to a trigger.
|
141
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/patch_bindings
|
142
|
+
# @param trigger_id [string] An actions extensibility point.
|
143
|
+
# @param body [hash] The optional parameters to update.
|
144
|
+
#
|
145
|
+
# @return [json] Returns the bindings that were updated.
|
146
|
+
def patch_trigger_bindings(trigger_id, body = nil)
|
147
|
+
raise Auth0::MissingTriggerId, 'Must supply a valid trigger_id' if trigger_id.to_s.empty?
|
148
|
+
raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
|
149
|
+
path = "#{actions_path}/triggers/#{trigger_id}/bindings"
|
150
|
+
patch(path, body)
|
151
|
+
end
|
152
|
+
alias update_trigger_bindings patch_trigger_bindings
|
153
|
+
|
154
|
+
# Retrieve a specific version of an action
|
155
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/get_action_version
|
156
|
+
# @param action_id [string] The ID of the action.
|
157
|
+
# @param version_id [string] The ID of the action version.
|
158
|
+
#
|
159
|
+
# @return [json] Returns the action.
|
160
|
+
def action_by_version(action_id, version_id)
|
161
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
162
|
+
raise Auth0::MissingVersionId, 'Must supply a valid version_id' if version_id.to_s.empty?
|
163
|
+
path = "#{actions_path}/actions/#{action_id}/versions/#{version_id}"
|
164
|
+
get(path)
|
165
|
+
end
|
166
|
+
alias get_action_by_version action_by_version
|
167
|
+
|
168
|
+
# Deploy an action.
|
169
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/post_deploy_action
|
170
|
+
# @param action_id [string] The ID of the action.
|
171
|
+
# @return [json] Returns the created action.
|
172
|
+
def deploy_action(action_id)
|
173
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
174
|
+
path = "#{actions_path}/actions/#{action_id}/deploy"
|
175
|
+
post(path)
|
176
|
+
end
|
177
|
+
|
178
|
+
# Test an action.
|
179
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/post_test_action
|
180
|
+
# @param action_id [string] The ID of the action.
|
181
|
+
# @param body [hash] See https://auth0.com/docs/api/management/v2/#!/actions/post_test_action for available options
|
182
|
+
# @return [json] Returns the created action.
|
183
|
+
def test_action(action_id, body = {})
|
184
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
185
|
+
raise Auth0::InvalidParameter, 'Must supply a valid body' if body.to_s.empty? || body.empty?
|
186
|
+
path = "#{actions_path}/actions/#{action_id}/test"
|
187
|
+
post(path, body)
|
188
|
+
end
|
189
|
+
|
190
|
+
# Performs the equivalent of a roll-back of an action to an earlier, specified version.
|
191
|
+
# @see https://auth0.com/docs/api/management/v2/#!/actions/post_deploy_draft_version
|
192
|
+
# @param action_id [string] The ID of the action.
|
193
|
+
# @param version_id [string] The ID of the action version.
|
194
|
+
# @return [json] Returns the created action.
|
195
|
+
def rollback_action(action_id, version_id)
|
196
|
+
raise Auth0::MissingActionId, 'Must supply a valid action_id' if action_id.to_s.empty?
|
197
|
+
raise Auth0::MissingVersionId, 'Must supply a valid version_id' if version_id.to_s.empty?
|
198
|
+
path = "#{actions_path}/actions/#{action_id}/versions/#{version_id}/deploy"
|
199
|
+
post(path)
|
200
|
+
end
|
201
|
+
|
202
|
+
private
|
203
|
+
# actions API path
|
204
|
+
def actions_path
|
205
|
+
@actions_path ||= '/api/v2/actions'
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
end
|