passageidentity 0.7.1 → 1.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/openapi_client/api/users_api.rb +18 -18
  3. data/lib/openapi_client/models/create_magic_link_request.rb +21 -2
  4. data/lib/openapi_client/models/{create_user_request.rb → create_user_args.rb} +3 -3
  5. data/lib/openapi_client/models/magic_link.rb +1 -0
  6. data/lib/openapi_client/models/{theme_type.rb → magic_link_language.rb} +11 -7
  7. data/lib/openapi_client/models/{user_info.rb → passage_user.rb} +3 -3
  8. data/lib/openapi_client/models/{update_user_request.rb → update_user_args.rb} +3 -3
  9. data/lib/openapi_client/models/user_response.rb +1 -1
  10. data/lib/openapi_client.rb +4 -19
  11. data/lib/passageidentity/auth.rb +43 -156
  12. data/lib/passageidentity/client.rb +16 -96
  13. data/lib/passageidentity/user.rb +246 -0
  14. data/lib/passageidentity/version.rb +1 -1
  15. metadata +38 -36
  16. data/lib/models/update_magic_link_auth_method.rb +0 -276
  17. data/lib/models/update_otp_auth_method.rb +0 -276
  18. data/lib/models/update_passkeys_auth_method.rb +0 -216
  19. data/lib/openapi_client/api/apps_api.rb +0 -85
  20. data/lib/openapi_client/models/app_info.rb +0 -886
  21. data/lib/openapi_client/models/app_response.rb +0 -221
  22. data/lib/openapi_client/models/auth_methods.rb +0 -254
  23. data/lib/openapi_client/models/element_customization.rb +0 -457
  24. data/lib/openapi_client/models/font_family.rb +0 -58
  25. data/lib/openapi_client/models/layout_config.rb +0 -285
  26. data/lib/openapi_client/models/layouts.rb +0 -241
  27. data/lib/openapi_client/models/magic_link_auth_method.rb +0 -295
  28. data/lib/openapi_client/models/otp_auth_method.rb +0 -295
  29. data/lib/openapi_client/models/passkeys_auth_method.rb +0 -221
  30. data/lib/openapi_client/models/technologies.rb +0 -46
  31. data/lib/openapi_client/models/ttl_display_unit.rb +0 -42
  32. data/lib/openapi_client/models/user_metadata_field.rb +0 -323
  33. data/lib/openapi_client/models/user_metadata_field_type.rb +0 -44
  34. data/lib/passageidentity/user_api.rb +0 -218
@@ -1,218 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubygems/deprecate'
4
- require_relative 'client'
5
-
6
- module Passage
7
- # The UserAPI class provides methods for interacting with Passage Users
8
- class UserAPI
9
- extend Gem::Deprecate
10
-
11
- # rubocop:disable Metrics/AbcSize
12
- # This class will require an API key
13
- def initialize(app_id, api_key)
14
- @app_id = app_id
15
- @api_key = api_key
16
- @user_client = OpenapiClient::UsersApi.new
17
- @user_device_client = OpenapiClient::UserDevicesApi.new
18
-
19
- header_params = { 'Passage-Version' => "passage-ruby #{Passage::VERSION}" }
20
- header_params['Authorization'] = "Bearer #{@api_key}" if @api_key != ''
21
-
22
- @req_opts = {}
23
- @req_opts[:header_params] = header_params
24
- @req_opts[:debug_auth_names] = ['header']
25
- end
26
-
27
- def get(user_id:)
28
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
29
-
30
- begin
31
- response = @user_client.get_user(@app_id, user_id, @req_opts)
32
- response.user
33
- rescue Faraday::Error => e
34
- raise PassageError.new(
35
- status_code: e.response[:status],
36
- body: e.response[:body]
37
- )
38
- end
39
- end
40
-
41
- def get_by_identifier(user_identifier:)
42
- raise ArgumentError, 'identifier is required.' unless user_identifier && !user_identifier.empty?
43
-
44
- begin
45
- @req_opts[:limit] = 1
46
- @req_opts[:identifier] = user_identifier.downcase
47
- response = @user_client.list_paginated_users(@app_id, @req_opts)
48
- users = response.users
49
-
50
- if users.empty?
51
- raise PassageError.new(
52
- status_code: 404,
53
- body: {
54
- error: 'User not found.',
55
- code: 'user_not_found'
56
- }
57
- )
58
- end
59
- get(user_id: users.first.id)
60
- rescue Faraday::Error => e
61
- raise PassageError.new(
62
- status_code: e.response[:status],
63
- body: e.response[:body]
64
- )
65
- end
66
- end
67
-
68
- def activate(user_id:)
69
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
70
-
71
- begin
72
- response = @user_client.activate_user(@app_id, user_id, @req_opts)
73
- response.user
74
- rescue Faraday::Error => e
75
- raise PassageError.new(
76
- status_code: e.response[:status],
77
- body: e.response[:body]
78
- )
79
- end
80
- end
81
-
82
- def deactivate(user_id:)
83
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
84
-
85
- begin
86
- response = @user_client.deactivate_user(@app_id, user_id, @req_opts)
87
- response.user
88
- rescue Faraday::Error => e
89
- raise PassageError.new(
90
- status_code: e.response[:status],
91
- body: e.response[:body]
92
- )
93
- end
94
- end
95
-
96
- def update(user_id:, email: '', phone: '', user_metadata: {})
97
- warn '[DEPRECATED] the `update` method parameters will change to `user_id: string, ' \
98
- 'options: UpdateUserArgs`. Parameters will change on or after 2025-1.'
99
-
100
- updates = {}
101
- updates['email'] = email unless email.empty?
102
- updates['phone'] = phone unless phone.empty?
103
- updates['user_metadata'] = user_metadata unless user_metadata.empty?
104
-
105
- update_v2(user_id: user_id, options: updates)
106
- end
107
-
108
- def create(email: '', phone: '', user_metadata: {})
109
- warn '[DEPRECATED] the `create` method parameters will change to `args: CreateUserArgs`.' \
110
- 'Parameters will change on or after 2025-1.'
111
-
112
- create = {}
113
- create['email'] = email unless email.empty?
114
- create['phone'] = phone unless phone.empty?
115
- create['user_metadata'] = user_metadata unless user_metadata.empty?
116
-
117
- create_v2(args: create)
118
- end
119
-
120
- def delete(user_id:)
121
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
122
-
123
- begin
124
- @user_client.delete_user(@app_id, user_id, @req_opts)
125
- true
126
- rescue Faraday::Error => e
127
- raise PassageError.new(
128
- 'failed to delete Passage User',
129
- status_code: e.response[:status],
130
- body: e.response[:body]
131
- )
132
- end
133
- end
134
-
135
- def revoke_device(user_id:, device_id:)
136
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
137
- raise ArgumentError, 'device_id is required.' unless device_id && !device_id.empty?
138
-
139
- begin
140
- @user_device_client.delete_user_devices(@app_id, user_id, device_id, @req_opts)
141
- rescue Faraday::Error => e
142
- raise PassageError.new(
143
- status_code: e.response[:status],
144
- body: e.response[:body]
145
- )
146
- end
147
- end
148
-
149
- def delete_device(user_id:, device_id:)
150
- revoke_device(user_id: user_id, device_id: device_id)
151
- true
152
- end
153
-
154
- def list_devices(user_id:)
155
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
156
-
157
- begin
158
- response = @user_device_client.list_user_devices(@app_id, user_id, @req_opts)
159
- response.devices
160
- rescue Faraday::Error => e
161
- raise PassageError.new(
162
- status_code: e.response[:status],
163
- body: e.response[:body]
164
- )
165
- end
166
- end
167
-
168
- def signout(user_id:)
169
- revoke_refresh_tokens(user_id: user_id)
170
- true
171
- end
172
-
173
- def revoke_refresh_tokens(user_id:)
174
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
175
-
176
- begin
177
- tokens_client = OpenapiClient::TokensApi.new
178
- tokens_client.revoke_user_refresh_tokens(@app_id, user_id, @req_opts)
179
- rescue Faraday::Error => e
180
- raise PassageError.new(
181
- status_code: e.response[:status],
182
- body: e.response[:body]
183
- )
184
- end
185
- end
186
-
187
- private
188
-
189
- def create_v2(args: {})
190
- raise ArgumentError, 'At least one of args.email or args.phone is required.' unless args['phone'] || args['email']
191
-
192
- response = @user_client.create_user(@app_id, args, @req_opts)
193
- response.user
194
- rescue Faraday::Error => e
195
- raise PassageError.new(
196
- status_code: e.response[:status],
197
- body: e.response[:body]
198
- )
199
- end
200
-
201
- def update_v2(user_id:, options: {})
202
- raise ArgumentError, 'user_id is required.' unless user_id && !user_id.empty?
203
- raise ArgumentError, 'options are required.' if options.empty?
204
-
205
- response = @user_client.update_user(@app_id, user_id, options, @req_opts)
206
- response.user
207
- rescue Faraday::Error => e
208
- raise PassageError.new(
209
- status_code: e.response[:status],
210
- body: e.response[:body]
211
- )
212
- end
213
- # rubocop:enable Metrics/AbcSize
214
-
215
- deprecate(:signout, :revoke_refresh_tokens, 2025, 1)
216
- deprecate(:delete_device, :revoke_device, 2025, 1)
217
- end
218
- end