authing_ruby 1.1.0 → 1.1.1
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/authing_ruby/GraphQLAPI.rb +13 -2
- data/lib/authing_ruby/authentication/AuthenticationClient.rb +24 -0
- data/lib/authing_ruby/graphql/mutations/updatePhone.gql +63 -0
- data/lib/authing_ruby/test/mini_test/TestAuthenticationClient.rb +0 -4
- data/lib/authing_ruby/test/mini_test/TestSMSandEmail.rb +46 -3
- data/lib/authing_ruby/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b36719926968b5a3c6b66874c4f804b9c6b78d4f37cfb3ade0a2bee71de464a0
|
4
|
+
data.tar.gz: a177866df7eb186c9deae48b8f8cc5b868b6256f634ac8ad389b31dfae271056
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42a6dc27513b5573bd0ee10bd73fb0c16610977ade77243ee40839be412f23e6fa68df217a44a1f88f9bd169d601107ce9d03a55ca8dd6f83540902da70a3c31
|
7
|
+
data.tar.gz: 913bea2c6b8a7731ff001482481751c080c8500afcb40b693fc8fba2b095d42106461925a2144a620c4badba49ff2c2389d0d20e9ca9b88d6dfa2a03061caa27
|
@@ -1,10 +1,15 @@
|
|
1
|
-
#
|
2
|
-
# 把一些 garpqhlClient.request 封装起来,里面包含了 const query = AccessTokenDocument;
|
1
|
+
# 类似 JS SDK 里 src/lib/graphqlapi.ts 的用途,把请求进行封装
|
3
2
|
|
4
3
|
# 使用示例
|
5
4
|
# graphqlAPI = AuthingRuby::GraphQLAPI.new
|
6
5
|
# graphqlAPI.getAccessToken(graphqlClient, variables)
|
7
6
|
|
7
|
+
# 一共有三个参数
|
8
|
+
# (garpqhlClient, tokenProvider = nil, variables = nil)
|
9
|
+
# garpqhlClient 是 lib/authing_ruby/common/GraphqlClient.rb
|
10
|
+
# tokenProvider 是 lib/authing_ruby/authentication/AuthenticationTokenProvider.rb
|
11
|
+
# variables 就是参数
|
12
|
+
|
8
13
|
module AuthingRuby
|
9
14
|
class GraphQLAPI
|
10
15
|
|
@@ -112,12 +117,18 @@ module AuthingRuby
|
|
112
117
|
return _graphql_mutation_request("resetPassword", garpqhlClient, tokenProvider, variables)
|
113
118
|
end
|
114
119
|
|
120
|
+
# 更新用户手机号码
|
121
|
+
def updatePhone(garpqhlClient, tokenProvider = nil, variables = nil)
|
122
|
+
return _graphql_mutation_request("updatePhone", garpqhlClient, tokenProvider, variables)
|
123
|
+
end
|
124
|
+
|
115
125
|
def bindPhone(garpqhlClient, tokenProvider = nil, variables = nil)
|
116
126
|
return _graphql_mutation_request("bindPhone", garpqhlClient, tokenProvider, variables)
|
117
127
|
end
|
118
128
|
|
119
129
|
# 太多同样写法的 method 了,稍微抽象一下
|
120
130
|
# 这个负责发 mutation 的 request
|
131
|
+
# 第一个参数 gql_file_name 就是文件名
|
121
132
|
def _graphql_mutation_request(gql_file_name, garpqhlClient, tokenProvider, variables)
|
122
133
|
file = File.open("#{@folder_mutation}/#{gql_file_name}.gql");
|
123
134
|
return _graphql_request(file, garpqhlClient, tokenProvider, variables)
|
@@ -692,6 +692,30 @@ module AuthingRuby
|
|
692
692
|
end
|
693
693
|
end
|
694
694
|
|
695
|
+
# 更新用户手机号
|
696
|
+
# 更新用户手机号。和修改邮箱一样,默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号(目前账号绑定的手机号)和当前邮箱(将要绑定的手机号)。
|
697
|
+
# 也就是说,用户 A 当前绑定的手机号为 15888888888,想修改为 15899999999,那么就需要同时验证这两个手机号。
|
698
|
+
# 开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台 的 设置目录下的安全信息模块进行关闭。
|
699
|
+
# 用户首次绑定手机号请使用 bindPhone 接口。
|
700
|
+
def updatePhone(phone, phoneCode, oldPhone, oldPhoneCode)
|
701
|
+
graphqlAPI = AuthingRuby::GraphQLAPI.new
|
702
|
+
variables = {
|
703
|
+
"phone": phone,
|
704
|
+
"phoneCode": phoneCode,
|
705
|
+
}
|
706
|
+
variables['oldPhone'] = oldPhone if oldPhone
|
707
|
+
variables['oldPhoneCode'] = oldPhoneCode if oldPhoneCode
|
708
|
+
|
709
|
+
hash = graphqlAPI.updatePhone(@graphqlClient, @tokenProvider, variables)
|
710
|
+
user = hash.dig("data", "updatePhone")
|
711
|
+
if user
|
712
|
+
setCurrentUser(user)
|
713
|
+
return user
|
714
|
+
else
|
715
|
+
return hash
|
716
|
+
end
|
717
|
+
end
|
718
|
+
|
695
719
|
# 通过短信验证码重置密码
|
696
720
|
def resetPasswordByPhoneCode(phone, code, newPassword)
|
697
721
|
publicKey = @publicKeyManager.getPublicKey()
|
@@ -0,0 +1,63 @@
|
|
1
|
+
mutation updatePhone(
|
2
|
+
$phone: String!
|
3
|
+
$phoneCode: String!
|
4
|
+
$oldPhone: String
|
5
|
+
$oldPhoneCode: String
|
6
|
+
) {
|
7
|
+
updatePhone(
|
8
|
+
phone: $phone
|
9
|
+
phoneCode: $phoneCode
|
10
|
+
oldPhone: $oldPhone
|
11
|
+
oldPhoneCode: $oldPhoneCode
|
12
|
+
) {
|
13
|
+
id
|
14
|
+
arn
|
15
|
+
userPoolId
|
16
|
+
status
|
17
|
+
username
|
18
|
+
email
|
19
|
+
emailVerified
|
20
|
+
phone
|
21
|
+
phoneVerified
|
22
|
+
unionid
|
23
|
+
openid
|
24
|
+
nickname
|
25
|
+
registerSource
|
26
|
+
photo
|
27
|
+
password
|
28
|
+
oauth
|
29
|
+
token
|
30
|
+
tokenExpiredAt
|
31
|
+
loginsCount
|
32
|
+
lastLogin
|
33
|
+
lastIP
|
34
|
+
signedUp
|
35
|
+
blocked
|
36
|
+
isDeleted
|
37
|
+
device
|
38
|
+
browser
|
39
|
+
company
|
40
|
+
name
|
41
|
+
givenName
|
42
|
+
familyName
|
43
|
+
middleName
|
44
|
+
profile
|
45
|
+
preferredUsername
|
46
|
+
website
|
47
|
+
gender
|
48
|
+
birthdate
|
49
|
+
zoneinfo
|
50
|
+
locale
|
51
|
+
address
|
52
|
+
formatted
|
53
|
+
streetAddress
|
54
|
+
locality
|
55
|
+
region
|
56
|
+
postalCode
|
57
|
+
city
|
58
|
+
province
|
59
|
+
country
|
60
|
+
createdAt
|
61
|
+
updatedAt
|
62
|
+
}
|
63
|
+
}
|
@@ -12,7 +12,7 @@
|
|
12
12
|
|
13
13
|
require "minitest/autorun"
|
14
14
|
require "./lib/authing_ruby.rb"
|
15
|
-
require "./lib/test/helper.rb"
|
15
|
+
require "./lib/authing_ruby/test/helper.rb"
|
16
16
|
require 'dotenv'
|
17
17
|
Dotenv.load('.env.test')
|
18
18
|
|
@@ -97,5 +97,48 @@ class TestSMSandEmail < Minitest::Test
|
|
97
97
|
# 清理工作:测完了删除第一步注册的用户
|
98
98
|
user_id = user['id']
|
99
99
|
@managementClient.users.delete(user_id)
|
100
|
-
end
|
101
|
-
|
100
|
+
end
|
101
|
+
|
102
|
+
# 测试: 更新用户手机号
|
103
|
+
# ruby ./lib/authing_ruby/test/mini_test/TestSMSandEmail.rb -n test_updatePhone
|
104
|
+
# 文档: https://docs.authing.cn/v2/reference/sdk-for-node/authentication/AuthenticationClient.html#%E6%9B%B4%E6%96%B0%E7%94%A8%E6%88%B7%E6%89%8B%E6%9C%BA%E5%8F%B7
|
105
|
+
def test_updatePhone
|
106
|
+
# 前提条件:先确保有一个用户是自己的手机号,可以直接进 Authing 手工新建一个用户。新建时给设定手机号和密码,手机号可以随便填比如13511112222
|
107
|
+
# 填写对应手机号, 以及密码
|
108
|
+
phone = '13511112222'
|
109
|
+
password = '123456789'
|
110
|
+
# 登录
|
111
|
+
user = @authenticationClient.loginByPhonePassword(phone, password)
|
112
|
+
# 填写另一个要绑定的新手机号(可以填你自己的,这样才能收到短信)
|
113
|
+
phone = '13556136684'
|
114
|
+
|
115
|
+
# 发送验证码 (把下面发短信这一行先取消注释, 收到短信后再注释上)
|
116
|
+
# puts manual_send_SMS(phone); return;
|
117
|
+
|
118
|
+
# 填写收到的短信验证码
|
119
|
+
code = '4874'
|
120
|
+
|
121
|
+
# 默认情况下,如果用户当前已经绑定了手机号,需要同时验证原有手机号
|
122
|
+
# 开发者也可以选择不开启 “验证原有手机号“ ,可以在 Authing 控制台 的 设置目录下的安全信息模块进行关闭。
|
123
|
+
# 单个用户池 -> 设置 -> 安全信息 -> 用户池安全设置 -> 修改手机号时是否验证旧手机号 -> 点击开关,切换为关闭 -> 右上角"保存"
|
124
|
+
# 由于没有2个手机号,这里是关闭后再测试
|
125
|
+
oldPhone = nil
|
126
|
+
oldPhoneCode = nil
|
127
|
+
|
128
|
+
updatePhoneResult = @authenticationClient.updatePhone(phone, code, oldPhone, oldPhoneCode)
|
129
|
+
puts updatePhoneResult
|
130
|
+
assert(updatePhoneResult.dig('id') != nil)
|
131
|
+
|
132
|
+
# 错误:
|
133
|
+
# {:code=>2020, :message=>"尚未登录,无访问权限", :data=>nil}
|
134
|
+
# {:code=>500, :message=>"该手机号已被绑定", :data=>nil}
|
135
|
+
# {:code=>2230, :message=>"新手机号和旧手机号一样", :data=>nil}
|
136
|
+
# {:code=>500, :message=>"修改手机号必须验证原来的手机号。", :data=>nil}
|
137
|
+
# {:code=>500, :message=>"验证码已过期", :data=>nil}
|
138
|
+
# {:code=>500, :message=>"验证码不正确!", :data=>nil}
|
139
|
+
|
140
|
+
# 成功会返回 User
|
141
|
+
# {"id"=>"60b5b17a9cf59b23b2bcbccb", "arn"=>"arn:cn:authing:60800b8ee5b66b23128b4980:user:60b5b17a9cf59b23b2bcbccb", "userPoolId"=>"60800b8ee5b66b23128b4980", "status"=>"Activated", "username"=>"测试更新手机号", "email"=>nil, "emailVerified"=>false, "phone"=>"13556136684", "phoneVerified"=>true, "unionid"=>nil, "openid"=>nil, "nickname"=>nil, "registerSource"=>["import:manual"], "photo"=>"https://files.authing.co/authing-console/default-user-avatar.png", "password"=>"871fde109c2f0f463cc35e0c3e840932", "oauth"=>nil, "token"=>"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiI2MGI1YjE3YTljZjU5YjIzYjJiY2JjY2IiLCJiaXJ0aGRhdGUiOm51bGwsImZhbWlseV9uYW1lIjpudWxsLCJnZW5kZXIiOiJVIiwiZ2l2ZW5fbmFtZSI6bnVsbCwibG9jYWxlIjpudWxsLCJtaWRkbGVfbmFtZSI6bnVsbCwibmFtZSI6bnVsbCwibmlja25hbWUiOm51bGwsInBpY3R1cmUiOiJodHRwczovL2ZpbGVzLmF1dGhpbmcuY28vYXV0aGluZy1jb25zb2xlL2RlZmF1bHQtdXNlci1hdmF0YXIucG5nIiwicHJlZmVycmVkX3VzZXJuYW1lIjpudWxsLCJwcm9maWxlIjpudWxsLCJ1cGRhdGVkX2F0IjoiMjAyMS0wNi0wMVQwNDoxNjo1MS41NDBaIiwid2Vic2l0ZSI6bnVsbCwiem9uZWluZm8iOm51bGwsImFkZHJlc3MiOnsiY291bnRyeSI6bnVsbCwicG9zdGFsX2NvZGUiOm51bGwsInJlZ2lvbiI6bnVsbCwiZm9ybWF0dGVkIjpudWxsfSwicGhvbmVfbnVtYmVyIjoiMTM1MTExMTIyMjIiLCJwaG9uZV9udW1iZXJfdmVyaWZpZWQiOmZhbHNlLCJlbWFpbCI6bnVsbCwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJleHRlcm5hbF9pZCI6bnVsbCwidW5pb25pZCI6bnVsbCwiZGF0YSI6eyJ0eXBlIjoidXNlciIsInVzZXJQb29sSWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAiLCJhcHBJZCI6IjYwYjViMjFiZTMxMjkwNjI2ZmY2ZDgyZiIsImlkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwidXNlcklkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwiX2lkIjoiNjBiNWIxN2E5Y2Y1OWIyM2IyYmNiY2NiIiwicGhvbmUiOiIxMzUxMTExMjIyMiIsImVtYWlsIjpudWxsLCJ1c2VybmFtZSI6Iua1i-ivleabtOaWsOaJi-acuuWPtyIsInVuaW9uaWQiOm51bGwsIm9wZW5pZCI6bnVsbCwiY2xpZW50SWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAifSwidXNlcnBvb2xfaWQiOiI2MDgwMGI4ZWU1YjY2YjIzMTI4YjQ5ODAiLCJhdWQiOiI2MGI1YjIxYmUzMTI5MDYyNmZmNmQ4MmYiLCJleHAiOjE2MjM3MzA2MzEsImlhdCI6MTYyMjUyMTAzMSwiaXNzIjoiaHR0cHM6Ly9tb3Jlbi5hdXRoaW5nLmNuL29pZGMifQ.VKSB6q-DBmtKLzOh_2qjBPQCSNZUAtrw_G2ZlNjOxbs", "tokenExpiredAt"=>"2021-06-15T04:17:11+00:00", "loginsCount"=>6, "lastLogin"=>"2021-06-01T04:17:11+00:00", "lastIP"=>nil, "signedUp"=>"2021-06-01T04:03:06+00:00", "blocked"=>false, "isDeleted"=>false, "device"=>nil, "browser"=>nil, "company"=>nil, "name"=>nil, "givenName"=>nil, "familyName"=>nil, "middleName"=>nil, "profile"=>nil, "preferredUsername"=>nil, "website"=>nil, "gender"=>"U", "birthdate"=>nil, "zoneinfo"=>nil, "locale"=>nil, "address"=>nil, "formatted"=>nil, "streetAddress"=>nil, "locality"=>nil, "region"=>nil, "postalCode"=>nil, "city"=>nil, "province"=>nil, "country"=>nil, "createdAt"=>"2021-06-01T04:03:06+00:00", "updatedAt"=>"2021-06-01T04:17:12+00:00"}
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
data/lib/authing_ruby/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: authing_ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 郑诚(Zheng Cheng)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -189,6 +189,7 @@ files:
|
|
189
189
|
- lib/authing_ruby/graphql/mutations/resetPassword.gql
|
190
190
|
- lib/authing_ruby/graphql/mutations/sendEmail.gql
|
191
191
|
- lib/authing_ruby/graphql/mutations/updatePassword.gql
|
192
|
+
- lib/authing_ruby/graphql/mutations/updatePhone.gql
|
192
193
|
- lib/authing_ruby/graphql/mutations/updateUser.gql
|
193
194
|
- lib/authing_ruby/graphql/queries/accessToken.gql
|
194
195
|
- lib/authing_ruby/graphql/queries/checkLoginStatus.gql
|