auth0 2.1.1 → 3.0.0

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