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.
- checksums.yaml +4 -4
- data/lib/openapi_client/api/users_api.rb +18 -18
- data/lib/openapi_client/models/create_magic_link_request.rb +21 -2
- data/lib/openapi_client/models/{create_user_request.rb → create_user_args.rb} +3 -3
- data/lib/openapi_client/models/magic_link.rb +1 -0
- data/lib/openapi_client/models/{theme_type.rb → magic_link_language.rb} +11 -7
- data/lib/openapi_client/models/{user_info.rb → passage_user.rb} +3 -3
- data/lib/openapi_client/models/{update_user_request.rb → update_user_args.rb} +3 -3
- data/lib/openapi_client/models/user_response.rb +1 -1
- data/lib/openapi_client.rb +4 -19
- data/lib/passageidentity/auth.rb +43 -156
- data/lib/passageidentity/client.rb +16 -96
- data/lib/passageidentity/user.rb +246 -0
- data/lib/passageidentity/version.rb +1 -1
- metadata +38 -36
- data/lib/models/update_magic_link_auth_method.rb +0 -276
- data/lib/models/update_otp_auth_method.rb +0 -276
- data/lib/models/update_passkeys_auth_method.rb +0 -216
- data/lib/openapi_client/api/apps_api.rb +0 -85
- data/lib/openapi_client/models/app_info.rb +0 -886
- data/lib/openapi_client/models/app_response.rb +0 -221
- data/lib/openapi_client/models/auth_methods.rb +0 -254
- data/lib/openapi_client/models/element_customization.rb +0 -457
- data/lib/openapi_client/models/font_family.rb +0 -58
- data/lib/openapi_client/models/layout_config.rb +0 -285
- data/lib/openapi_client/models/layouts.rb +0 -241
- data/lib/openapi_client/models/magic_link_auth_method.rb +0 -295
- data/lib/openapi_client/models/otp_auth_method.rb +0 -295
- data/lib/openapi_client/models/passkeys_auth_method.rb +0 -221
- data/lib/openapi_client/models/technologies.rb +0 -46
- data/lib/openapi_client/models/ttl_display_unit.rb +0 -42
- data/lib/openapi_client/models/user_metadata_field.rb +0 -323
- data/lib/openapi_client/models/user_metadata_field_type.rb +0 -44
- 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
|