auth0 2.1.1 → 3.0.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.
Files changed (93) hide show
  1. checksums.yaml +4 -4
  2. data/.bundle/config +2 -0
  3. data/.gitignore +5 -2
  4. data/.rspec +3 -0
  5. data/Gemfile +1 -1
  6. data/Gemfile.lock +68 -0
  7. data/auth0.gemspec +11 -10
  8. data/doc/Auth0/AccessDenied.html +142 -0
  9. data/doc/Auth0/Api/AuthenticationEndpoints.html +592 -0
  10. data/doc/Auth0/Api/V1/Clients.html +440 -0
  11. data/doc/Auth0/Api/V1/Connections.html +506 -0
  12. data/doc/Auth0/Api/V1/Logs.html +366 -0
  13. data/doc/Auth0/Api/V1/Rules.html +439 -0
  14. data/doc/Auth0/Api/V1/Users.html +1617 -0
  15. data/doc/Auth0/Api/V1.html +188 -0
  16. data/doc/Auth0/Api/V2/Blacklists.html +268 -0
  17. data/doc/Auth0/Api/V2/Clients.html +477 -0
  18. data/doc/Auth0/Api/V2/Jobs.html +277 -0
  19. data/doc/Auth0/Api/V2/Router.html +109 -0
  20. data/doc/Auth0/Api/V2/Stats.html +268 -0
  21. data/doc/Auth0/Api/V2/Users.html +652 -0
  22. data/doc/Auth0/Api/V2.html +193 -0
  23. data/doc/Auth0/Api.html +128 -0
  24. data/doc/Auth0/BadRequest.html +142 -0
  25. data/doc/Auth0/Client.html +164 -0
  26. data/doc/Auth0/Exception.html +140 -0
  27. data/doc/Auth0/InvalidParameter.html +142 -0
  28. data/doc/Auth0/Mixins/HTTPartyProxy.html +121 -0
  29. data/doc/Auth0/Mixins/Initializer.html +312 -0
  30. data/doc/Auth0/Mixins.html +153 -0
  31. data/doc/Auth0/NotFound.html +143 -0
  32. data/doc/Auth0/ServerError.html +142 -0
  33. data/doc/Auth0/Unauthorized.html +143 -0
  34. data/doc/Auth0/Unsupported.html +142 -0
  35. data/doc/Auth0/UserIdIsBlank.html +143 -0
  36. data/doc/Auth0.html +153 -0
  37. data/doc/Auth0Client.html +163 -0
  38. data/doc/_index.html +418 -0
  39. data/doc/class_list.html +58 -0
  40. data/doc/css/common.css +1 -0
  41. data/doc/css/full_list.css +57 -0
  42. data/doc/css/style.css +339 -0
  43. data/doc/file.README.html +103 -0
  44. data/doc/file_list.html +60 -0
  45. data/doc/frames.html +26 -0
  46. data/doc/index.html +103 -0
  47. data/doc/js/app.js +219 -0
  48. data/doc/js/full_list.js +181 -0
  49. data/doc/js/jquery.js +4 -0
  50. data/doc/method_list.html +435 -0
  51. data/doc/top-level-namespace.html +114 -0
  52. data/lib/auth0/api/authentication_endpoints.rb +71 -0
  53. data/lib/auth0/api/v1/clients.rb +48 -0
  54. data/lib/auth0/api/v1/connections.rb +51 -0
  55. data/lib/auth0/api/v1/logs.rb +41 -0
  56. data/lib/auth0/api/v1/rules.rb +44 -0
  57. data/lib/auth0/api/v1/users.rb +163 -0
  58. data/lib/auth0/api/v1.rb +19 -0
  59. data/lib/auth0/api/v2/blacklists.rb +24 -0
  60. data/lib/auth0/api/v2/clients.rb +41 -0
  61. data/lib/auth0/api/v2/jobs.rb +20 -0
  62. data/lib/auth0/api/v2/stats.rb +24 -0
  63. data/lib/auth0/api/v2/users.rb +67 -0
  64. data/lib/auth0/api/v2.rb +17 -0
  65. data/lib/auth0/client.rb +5 -48
  66. data/lib/auth0/exception.rb +22 -0
  67. data/lib/auth0/mixins/httparty_proxy.rb +35 -0
  68. data/lib/auth0/mixins/initializer.rb +34 -0
  69. data/lib/auth0/mixins.rb +12 -0
  70. data/lib/auth0/version.rb +3 -2
  71. data/lib/auth0.rb +6 -1
  72. data/lib/auth0_client.rb +3 -0
  73. data/spec/lib/auth0/api/authentication_endpoints_spec.rb +56 -0
  74. data/spec/lib/auth0/api/v1/clients_spec.rb +62 -0
  75. data/spec/lib/auth0/api/v1/connections_spec.rb +62 -0
  76. data/spec/lib/auth0/api/v1/logs_spec.rb +46 -0
  77. data/spec/lib/auth0/api/v1/rules_spec.rb +40 -0
  78. data/spec/lib/auth0/api/v1/users_spec.rb +217 -0
  79. data/spec/lib/auth0/api/v2/blacklists_spec.rb +24 -0
  80. data/spec/lib/auth0/api/v2/clients_spec.rb +54 -0
  81. data/spec/lib/auth0/api/v2/jobs_spec.rb +21 -0
  82. data/spec/lib/auth0/api/v2/stats_spec.rb +22 -0
  83. data/spec/lib/auth0/api/v2/users_spec.rb +72 -0
  84. data/spec/lib/auth0/client_spec.rb +47 -0
  85. data/spec/lib/auth0/mixins/httparty_proxy_spec.rb +119 -0
  86. data/spec/lib/auth0_client_spec.rb +8 -0
  87. data/spec/spec_helper.rb +8 -7
  88. data/spec/support/dummy_class.rb +7 -0
  89. data/spec/support/dummy_class_for_proxy.rb +4 -0
  90. data/spec/support/stub_response.rb +2 -0
  91. metadata +159 -28
  92. data/lib/omniauth/strategies/auth0.rb +0 -62
  93. data/spec/omniauth/strategies/auth0_spec.rb +0 -149
@@ -0,0 +1,51 @@
1
+ module Auth0
2
+ module Api
3
+ module V1
4
+ # {https://auth0.com/docs/api#connections}
5
+ module Connections
6
+ # {https://auth0.com/docs/api#!#get--api-connections}
7
+ def connections
8
+ get("/api/connections")
9
+ end
10
+ alias :get_connections :connections
11
+
12
+ # {https://auth0.com/docs/api#!#get--api-connections--connection-name-}
13
+ def connection(connection_name)
14
+ path = "/api/connections/#{connection_name.to_s}"
15
+ get(path)
16
+ end
17
+ alias :get_connection :connection
18
+
19
+ # {https://auth0.com/docs/api#!#delete--api-connections--connection-name-}
20
+ def delete_connection(connection_name)
21
+ path = "/api/connections/#{connection_name.to_s}"
22
+ delete(path)
23
+ end
24
+
25
+ # {https://auth0.com/docs/api#!#post--api-connections}
26
+ def create_connection(connection_name, strategy, tenant_domain, domain_aliases=nil)
27
+ path = "/api/connections"
28
+ request_params = { name: connection_name,
29
+ strategy: strategy,
30
+ options: {
31
+ tenant_domain: tenant_domain,
32
+ domain_aliases: domain_aliases
33
+ }
34
+ }
35
+ post(path, request_params)
36
+ end
37
+
38
+ # {https://auth0.com/docs/api#!#put--api-connections--connection-name-}
39
+ def update_connection(connection_name, tenant_domain, status=true)
40
+ path = "/api/connections/#{connection_name}"
41
+ request_params = { status: status,
42
+ options: {
43
+ tenant_domain: tenant_domain
44
+ }
45
+ }
46
+ put(path, request_params)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,41 @@
1
+ module Auth0
2
+ module Api
3
+ module V1
4
+ # {https://auth0.com/docs/api#logs}
5
+ module Logs
6
+ # {https://auth0.com/docs/api#!#get--api-logs-page--number--per_page--items--sort--field----1-1--fields--fields--exclude_fields-true-false-}
7
+ #
8
+ # {https://auth0.com/docs/api#!#get--api-logs-search--criteria-}
9
+ #
10
+ # {https://auth0.com/docs/api#!#get--api-logs-from--checkpointId--take--count-}
11
+ def logs(options={})
12
+ acceptable_params = %i(take from search_criteria page per_page sort fields exclude_fields)
13
+ options.reject! do |key,value|
14
+ if key.nil? ||\
15
+ value.nil? ||\
16
+ !acceptable_params.include?(key.to_sym)
17
+ warn "#{key} is not in acceptable params list: #{acceptable_params}"
18
+ true
19
+ end
20
+ end
21
+ path= "/api/logs?"+URI.encode_www_form(options)
22
+ get(path)
23
+ end
24
+
25
+ alias :search_logs :logs
26
+
27
+ # {https://auth0.com/docs/api#!#get--api-logs--_id-}
28
+ def log(id)
29
+ path = "/api/logs/#{id}"
30
+ get(path)
31
+ end
32
+
33
+ # {https://auth0.com/docs/api#!#get--api-users--user_id--logs-page--number--per_page--items-}
34
+ def user_logs(user_id, page=0, per_page=50)
35
+ path = "/api/users/#{user_id}/logs?page=#{page}&per_page=#{per_page}"
36
+ get(path)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,44 @@
1
+ module Auth0
2
+ module Api
3
+ module V1
4
+ # https://auth0.com/docs/api#rules
5
+ module Rules
6
+ # https://auth0.com/docs/api#!#get--api-rules
7
+ def rules
8
+ path = "/api/rules"
9
+ get(path)
10
+ end
11
+
12
+ alias :get_rules :rules
13
+
14
+ # https://auth0.com/docs/api#!#post--api-rules
15
+ def create_rule(name, script, order=nil,status=true)
16
+ path = "/api/rules"
17
+ request_params = { name: name,
18
+ status: status,
19
+ script: script,
20
+ order: order
21
+ }
22
+ post(path, request_params)
23
+ end
24
+
25
+ # https://auth0.com/docs/api#!#put--api-rules--rule-name-
26
+ def update_rule(name, script, order=nil,status=true)
27
+ path = "/api/rules/#{name}"
28
+ request_params = {
29
+ status: status,
30
+ script: script,
31
+ order: order
32
+ }
33
+ put(path, request_params)
34
+ end
35
+
36
+ # https://auth0.com/docs/api#!#delete--api-rules--rule-name-
37
+ def delete_rule(name)
38
+ path = "/api/rules/#{name}"
39
+ delete(path)
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,163 @@
1
+ module Auth0
2
+ module Api
3
+ module V1
4
+ # {https://auth0.com/docs/api#users}
5
+ module Users
6
+ # {https://auth0.com/docs/api#!#get--api-users}
7
+ #
8
+ # {https://auth0.com/docs/api#!#get--api-users-search--criteria-}
9
+ def users(search=nil)
10
+ path = "/api/users"
11
+ path += "?search=#{search.to_s}" unless search.to_s.empty?
12
+ get(path)
13
+ end
14
+
15
+ alias :users_search :users
16
+ alias :get_users :users
17
+
18
+ # {https://auth0.com/docs/api#!#get--api-users--user_id-}
19
+ def user(user_id)
20
+ path = "/api/users/#{user_id}"
21
+ get(path)
22
+ end
23
+
24
+ alias :get_user :user
25
+
26
+ # {https://auth0.com/docs/api#!#get--api-users--user_id--devices}
27
+ def user_devices(user_id)
28
+ path = "/api/users/#{user_id}/devices"
29
+ get(path)
30
+ end
31
+
32
+ # {https://auth0.com/docs/api#!#get--api-connections--connection--users}
33
+ # {https://auth0.com/docs/api#!#get--api-connections--connection--users-search--criteria-}
34
+ def connection_users(connection_name, search=nil)
35
+ path = "/api/connections/#{connection_name}/users"
36
+ path += "?search=#{search.to_s}" unless search.to_s.empty?
37
+ get(path)
38
+ end
39
+
40
+ alias :search_connection_users :connection_users
41
+
42
+ # {https://auth0.com/docs/api#!#get--api-enterpriseconnections-users-search--criteria-}
43
+ def enterpriseconnections_users(search_criteria=nil, per_page=500)
44
+ path = "/api/enterpriseconnections/users?search=#{search_criteria.to_s}&per_page=#{per_page.to_i.to_s}"
45
+ get(path)
46
+ end
47
+
48
+ # {https://auth0.com/docs/api#!#get--api-socialconnections-users-search--criteria-}
49
+ def socialconnections_users(search_criteria=nil, per_page=500)
50
+ path = "/api/socialconnections/users?search=#{search_criteria.to_s}&per_page=#{per_page.to_i.to_s}"
51
+ get(path)
52
+ end
53
+
54
+ # {https://auth0.com/docs/api#!#get--api-clients--client-id--users}
55
+ def client_users(client_id=@client_id)
56
+ path = "/api/clients/#{client_id}/users"
57
+ get(path)
58
+ end
59
+
60
+ # {https://auth0.com/docs/api#!#post--api-users}
61
+ def create_user(email, password, connection_name, request_params={})
62
+ options = { email: email, password: password, connection: connection_name }
63
+ request_params.merge!(options)
64
+ path = "/api/users"
65
+ post(path, request_params)
66
+ end
67
+
68
+ # {https://auth0.com/docs/api#!#post--api-users--user_id--send_verification_email}
69
+ def send_verification_email(user_id)
70
+ path = "/api/users/#{user_id}/send_verification_email"
71
+ post(path)
72
+ end
73
+
74
+ # {https://auth0.com/docs/api#!#post--api-users--user_id--change_password_ticket}
75
+ def change_password_ticket(user_id, new_password, result_url=nil)
76
+ request_params = { "newPassword" => new_password, "resultUrl" => result_url }
77
+ path = "/api/users/#{user_id}/change_password_ticket"
78
+ post(path, request_params)
79
+ end
80
+
81
+ # {https://auth0.com/docs/api#!#post--api-users--user_id--verification_ticket}
82
+ def verification_ticket(user_id, result_url=nil)
83
+ request_params = {"resultUrl" => result_url}
84
+ path = "/api/users/#{user_id}/verification_ticket"
85
+ post(path, request_params)
86
+ end
87
+
88
+ # {https://auth0.com/docs/api#!#post--api-users--user_id--publickey}
89
+ def create_public_key(user_id, device, public_key)
90
+ path = "/api/users/#{user_id}/public_key"
91
+ request_params = { device: device, public_key: public_key }
92
+ post(path, request_params)
93
+ end
94
+
95
+ # {https://auth0.com/docs/api#!#put--api-users--user_id--email}
96
+ def update_user_email(user_id, email, verify=true)
97
+ path = "/api/users/#{user_id}/email"
98
+ request_params = { email: email, verify: verify }
99
+ put(path, request_params)
100
+ end
101
+
102
+ # {https://auth0.com/docs/api#!#put--api-users--user_id--metadata}
103
+ # This will overwrite user's metadata, be really carefull, preffer using patch instead
104
+ def update_user_metadata(user_id, metadata={})
105
+ path = "/api/users/#{user_id}/metadata"
106
+ put(path, metadata)
107
+ end
108
+
109
+ # {https://auth0.com/docs/api#!#put--api-users--user_id--password}
110
+ def update_user_password(user_id, password, verify=true)
111
+ path = "/api/users/#{user_id}/password"
112
+ request_params = { password: password, verify: verify }
113
+ put(path, request_params)
114
+ end
115
+
116
+ # {https://auth0.com/docs/api#!#put--api-users--email--password}
117
+ def update_user_password_using_email(email, password, connection_name, verify=true)
118
+ request_params = {
119
+ email: email,
120
+ password: password,
121
+ connection: connection_name,
122
+ verify: verify
123
+ }
124
+ path = "/api/users/#{email}/password"
125
+ put(path, request_params)
126
+ end
127
+
128
+ # {https://auth0.com/docs/api#!#patch--api-users--user_id--metadata}
129
+ def patch_user_metadata(user_id, metadata={})
130
+ path = "/api/users/#{user_id}/metadata"
131
+ patch(path, metadata)
132
+ end
133
+
134
+ # {https://auth0.com/docs/api#!#delete--api-users}
135
+ #
136
+ # This will remove all your users
137
+ def delete_users
138
+ path = "/api/users/"
139
+ delete(path)
140
+ end
141
+
142
+ # {https://auth0.com/docs/api#!#delete--api-users--user_id-}
143
+ def delete_user(user_id)
144
+ raise Auth0::UserIdIsBlank, "if you want to remove all users user delete_users method" if user_id.to_s.empty?
145
+ path = "/api/users/#{user_id}"
146
+ delete(path)
147
+ end
148
+
149
+ # {https://auth0.com/docs/api#!#delete--api-users--user_id--refresh_tokens--refresh_token-}
150
+ def revoke_user_refresh_token(user_id, refresh_token)
151
+ path = "/api/users/#{user_id}/refresh_tokens/#{refresh_token}"
152
+ delete(path)
153
+ end
154
+
155
+ # {https://auth0.com/docs/api#!#delete--api-users--user_id--publickey-device--device-}
156
+ def revoke_user_device_public_key(user_id, device)
157
+ path = "/api/users/#{user_id}/publickey?device=#{device}"
158
+ delete(path)
159
+ end
160
+ end
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,19 @@
1
+ require "auth0/api/v1/users"
2
+ require "auth0/api/v1/clients"
3
+ require "auth0/api/v1/connections"
4
+ require "auth0/api/v1/rules"
5
+ require "auth0/api/v1/logs"
6
+ module Auth0
7
+ # Space for all API calls
8
+ module Api
9
+ # {https://auth0.com/docs/api}
10
+ # Describing current functionality of Auth0 API V1
11
+ module V1
12
+ include Auth0::Api::V1::Users
13
+ include Auth0::Api::V1::Connections
14
+ include Auth0::Api::V1::Clients
15
+ include Auth0::Api::V1::Rules
16
+ include Auth0::Api::V1::Logs
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,24 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ # https://auth0.com/docs/apiv2#!/blacklists
5
+ module Blacklists
6
+ # https://auth0.com/docs/apiv2#!/blacklists/get_tokens
7
+ def blacklisted_tokens
8
+ path = "/api/v2/blacklists/tokens"
9
+ get(path)
10
+ end
11
+
12
+ # https://auth0.com/docs/apiv2#!/blacklists/post_tokens
13
+ def add_token_to_blacklist(jti, aud=nil)
14
+ request_params = {
15
+ jti: jti,
16
+ aud: aud
17
+ }
18
+ path = "/api/v2/blacklists/tokens"
19
+ post(path, request_params)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,41 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ #https://auth0.com/docs/apiv2#!/clients
5
+ module Clients
6
+ #https://auth0.com/docs/apiv2#!/clients/get_clients
7
+ def clients(options={})
8
+ path = "/api/v2/clients"
9
+ get(path, options)
10
+ end
11
+ alias :get_clients :clients
12
+
13
+ #https://auth0.com/docs/apiv2#!/clients/post_clients
14
+ def create_client(name, options={})
15
+ request_params = Hash[options.map{|(k,v)| [k.to_sym,v]}]
16
+ request_params[:name] = name
17
+ path = "/api/v2/clients"
18
+ post(path, request_params)
19
+ end
20
+
21
+ #https://auth0.com/docs/apiv2#!/clients/get_clients_by_id
22
+ def client(client_id, options={})
23
+ path = "/api/v2/clients/" + client_id.to_s
24
+ get(path, options)
25
+ end
26
+
27
+ #https://auth0.com/docs/apiv2#!/clients/delete_clients_by_id
28
+ def delete_client(client_id)
29
+ path = "/api/v2/clients/" + client_id.to_s
30
+ delete(path)
31
+ end
32
+
33
+ #https://auth0.com/docs/apiv2#!/clients/patch_clients_by_id
34
+ def patch_client(client_id, options)
35
+ path = "/api/v2/clients/" + client_id.to_s
36
+ patch(path, options)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,20 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ # https://auth0.com/docs/apiv2#!/jobs
5
+ module Jobs
6
+ #https://auth0.com/docs/apiv2#!/jobs/get_jobs_by_job_id
7
+ def get_job(job_id)
8
+ path = "/api/v2/jobs/#{job_id}"
9
+ get(path)
10
+ end
11
+
12
+ # HTTParty doesn't support multipart upload, will move this functionality to a separate PR
13
+ # https://auth0.com/docs/apiv2#!/jobs/post_users_imports
14
+ def create_job(users_file, connection_name)
15
+ raise NotImplementedError
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,24 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ # https://auth0.com/docs/apiv2#!/stats
5
+ module Stats
6
+ #https://auth0.com/docs/apiv2#!/stats/get_active_users
7
+ def active_users
8
+ path = "/api/v2/stats/active-users"
9
+ get(path)
10
+ end
11
+
12
+ #https://auth0.com/docs/apiv2#!/stats/get_daily
13
+ def daily_stats(from, to)
14
+ path = "/api/v2/stats/daily"
15
+ request_params = {
16
+ from: from,
17
+ to: to
18
+ }
19
+ get(path, request_params)
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,67 @@
1
+ module Auth0
2
+ module Api
3
+ module V2
4
+ #https://auth0.com/docs/apiv2#!/users
5
+ module Users
6
+ #https://auth0.com/docs/apiv2#!/users/get_users
7
+ def users( per_page: nil, page: nil, include_totals: nil, sort: nil, connection: nil, fields: nil, exclude_fields: nil, q: nil )
8
+ request_params = { per_page: per_page,
9
+ page: page,
10
+ include_totals: include_totals,
11
+ sort: sort,
12
+ connection: connection,
13
+ fields: fields,
14
+ exclude_fields: exclude_fields,
15
+ q: q
16
+ }
17
+ path = "/api/v2/users"
18
+ get(path, request_params)
19
+ end
20
+ alias :get_users :users
21
+
22
+ #https://auth0.com/docs/apiv2#!/users/post_users
23
+ def create_user(name, options={})
24
+ path = "/api/v2/users"
25
+ request_params = Hash[options.map{|(k,v)| [k.to_sym,v]}]
26
+ request_params[:name] = name
27
+ post(path, request_params)
28
+ end
29
+
30
+ #https://auth0.com/docs/apiv2#!/users/delete_users
31
+ def delete_users
32
+ path = "/api/v2/users"
33
+ delete(path)
34
+ end
35
+
36
+ #https://auth0.com/docs/apiv2#!/users/get_users_by_id
37
+ def user(user_id, fields: nil, exclude_fields: nil)
38
+ path = "/api/v2/users/" + user_id.to_s
39
+ request_params = { fields: fields,
40
+ exclude_fields: exclude_fields
41
+ }
42
+ get(path, request_params)
43
+ end
44
+
45
+ #https://auth0.com/docs/apiv2#!/users/delete_users_by_id
46
+ def delete_user(user_id)
47
+ raise Auth0::UserIdIsBlank, "if you want to remove all users user delete_users method" if user_id.to_s.empty?
48
+ path = "/api/v2/users/" + user_id.to_s
49
+ delete(path)
50
+ end
51
+
52
+
53
+ #https://auth0.com/docs/apiv2#!/users/patch_users_by_id
54
+ def patch_user(user_id, options)
55
+ path = "/api/v2/users/" + user_id
56
+ patch(path, options)
57
+ end
58
+
59
+ #https://auth0.com/docs/apiv2#!/users/delete_multifactor_by_provider
60
+ def delete_user_provider(user_id, provider_name)
61
+ path = "/api/v2/users/#{user_id}/multifactor/#{provider_name}"
62
+ delete(path)
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,17 @@
1
+ require "auth0/api/v2/clients"
2
+ require "auth0/api/v2/users"
3
+ require "auth0/api/v2/blacklists"
4
+ require "auth0/api/v2/jobs"
5
+ require "auth0/api/v2/stats"
6
+ module Auth0
7
+ module Api
8
+ # https://auth0.com/docs/apiv2
9
+ module V2
10
+ include Auth0::Api::V2::Clients
11
+ include Auth0::Api::V2::Users
12
+ include Auth0::Api::V2::Blacklists
13
+ include Auth0::Api::V2::Jobs
14
+ include Auth0::Api::V2::Stats
15
+ end
16
+ end
17
+ end
data/lib/auth0/client.rb CHANGED
@@ -1,50 +1,7 @@
1
- require 'httparty'
2
-
3
- class Auth0Client
1
+ # Main class
2
+ # All Api calls are suposed to return hashes, but delete actions return strings.
3
+ class Auth0::Client
4
+ include Auth0::Mixins
4
5
  include HTTParty
5
- base_uri 'login.auth0.com'
6
-
7
- def initialize(options)
8
- self.class.base_uri "https://#{options[:namespace]}"
9
-
10
- token_reponse = self.class.post("/oauth/token", {
11
- body: {
12
- 'client_id' => options[:client_id],
13
- 'client_secret' => options[:client_secret],
14
- 'grant_type' => 'client_credentials'
15
- }
16
- })
17
-
18
- unless token_reponse.code == 200
19
- raise "Error geting the token: #{token_reponse.body}"
20
- end
21
-
22
- @token = token_reponse["access_token"]
23
- @headers = {
24
- "Authorization" => "Bearer #{@token}"
25
- }
26
- end
27
-
28
- def get_connections
29
- response = self.class.get("/api/connections", { headers: @headers })
30
- response.body
31
- end
32
-
33
- def delete_user(id)
34
- response = self.class.delete("/api/users/#{id}", { headers: @headers })
35
- response.body
36
- end
37
-
38
- def delegation(options)
39
- response = self.class.post("/delegation", {
40
- body: {
41
- client_id: options[:client_id],
42
- grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
43
- id_token: options[:id_token],
44
- target: options[:target],
45
- scope: "open_id"
46
- }
47
- })
48
- response.body
49
- end
6
+ base_uri "http://auth0.com"
50
7
  end
@@ -0,0 +1,22 @@
1
+ module Auth0
2
+ # Default exception in namespace of Auth0
3
+ # if you want to catch all exceptions, then you should use this one.
4
+ # Network exceptions are not included
5
+ class Exception < StandardError; end
6
+ end
7
+ # exception for unauthorized requests, if you see it, probably Bearer Token is not set correctly
8
+ class Auth0::Unauthorized < Auth0::Exception; end
9
+ # exception for not found resource, you query for an unexistent resource, or wrong path
10
+ class Auth0::NotFound < Auth0::Exception; end
11
+ # exception for unknown error
12
+ class Auth0::Unsupported < Auth0::Exception; end
13
+ # exception for server error
14
+ class Auth0::ServerError < Auth0::Exception; end
15
+ # exception for incorrect request, you've sent wrong params
16
+ class Auth0::BadRequest < Auth0::Exception; end
17
+ # exception for unset user_id, this might cause removal of all users, or other unexpected bahaviour
18
+ class Auth0::UserIdIsBlank < Auth0::Exception; end
19
+ # Api v2 access denied
20
+ class Auth0::AccessDenied < Auth0::Exception; end
21
+ # Invalid parameter passed, e.g. empty where ID is required
22
+ class Auth0::InvalidParameter < Auth0::Exception; end
@@ -0,0 +1,35 @@
1
+ module Auth0
2
+ module Mixins
3
+ # here's the proxy for HTTParty, we're building all request on that gem for now, if you want to feel free to use your own http client
4
+ module HTTPartyProxy
5
+ # proxying requests from instance methods to HTTParty class methods
6
+ %i(get post put patch delete).each do |method|
7
+ define_method(method) do |path, body={}|
8
+ safe_path = URI.escape(path)
9
+ body = body.delete_if {|k,v| v.nil? }
10
+ if method == :get
11
+ result = self.class.send(method, safe_path, query: body)
12
+ else
13
+ result = self.class.send(method, safe_path, body: body.to_json)
14
+ end
15
+ response_body =
16
+ begin
17
+ JSON.parse(result.body.to_s)
18
+ rescue JSON::ParserError
19
+ result.body
20
+ end
21
+ case result.code
22
+ when 200...226 then response_body
23
+ when 400 then raise Auth0::BadRequest, response_body
24
+ when 401 then raise Auth0::Unauthorized, response_body
25
+ when 403 then raise Auth0::AccessDenied, response_body
26
+ when 404 then raise Auth0::NotFound, response_body
27
+ when 500 then raise Auth0::ServerError, response_body
28
+ else
29
+ raise Auth0::Unsupported, response_body
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,34 @@
1
+ module Auth0
2
+ module Mixins
3
+ # Help class where Auth0::Client initialization described
4
+ module Initializer
5
+ # Default initialization mechanism, moved here to keep Auth0::Client clear
6
+ # accepts hash as parameter
7
+ # you can get all required fields from here: https://auth0.com/docs/auth-api
8
+ #
9
+ # To run using api v2, pass protocols: "v2" when creating a client
10
+ def initialize(config)
11
+ options = Hash[config.map{|(k,v)| [k.to_sym,v]}]
12
+ self.class.base_uri "https://#{options[:namespace]}"
13
+ self.class.headers "Content-Type" => 'application/json'
14
+ if options[:protocols].to_s.include?("v2")
15
+ self.extend Auth0::Api::V2
16
+ @token = options[:access_token]
17
+ else
18
+ self.extend Auth0::Api::V1
19
+ self.extend Auth0::Api::AuthenticationEndpoints
20
+ @client_id = options[:client_id]
21
+ @client_secret = options[:client_secret]
22
+ @token = obtain_access_token
23
+ end
24
+ self.class.headers "Authorization" => "Bearer #{options[:access_token]}"
25
+ end
26
+
27
+ # including initializer in top of klass
28
+ def self.included(klass)
29
+ klass.send :prepend, Initializer
30
+ end
31
+
32
+ end
33
+ end
34
+ end