@arcblock/did-connect-react 3.4.14 → 3.5.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 (208) hide show
  1. package/dist/standalone/did-connect-react.css +1 -0
  2. package/dist/standalone/index.js +133700 -0
  3. package/lib/Connect/components/login-item/connect-choose-list.js +111 -111
  4. package/lib/Connect/components/login-item/connect-provider-list.js +180 -180
  5. package/lib/Connect/components/login-item/mobile-login-item.js +56 -56
  6. package/lib/Connect/components/login-item/passkey-login-item.js +27 -29
  7. package/lib/Connect/components/login-item/web-login-item.js +31 -29
  8. package/lib/Connect/connect.js +202 -197
  9. package/lib/Connect/contexts/state.js +19 -17
  10. package/lib/Connect/hooks/provider-list.js +33 -33
  11. package/lib/Connect/plugins/email/list-item.js +14 -14
  12. package/lib/Connect/plugins/email/placeholder.js +77 -76
  13. package/lib/package.json.js +1 -1
  14. package/package.json +14 -9
  15. package/.aigne/doc-smith/config.yaml +0 -85
  16. package/.aigne/doc-smith/history.yaml +0 -6
  17. package/.aigne/doc-smith/output/structure-plan.json +0 -204
  18. package/.aigne/doc-smith/translation-cache.yaml +0 -11
  19. package/.aigne/doc-smith/upload-cache.yaml +0 -213
  20. package/docs/_sidebar.md +0 -18
  21. package/docs/advanced-authentication-methods.ja.md +0 -261
  22. package/docs/advanced-authentication-methods.md +0 -261
  23. package/docs/advanced-authentication-methods.zh-TW.md +0 -261
  24. package/docs/advanced-authentication-methods.zh.md +0 -261
  25. package/docs/advanced-utilities.ja.md +0 -132
  26. package/docs/advanced-utilities.md +0 -132
  27. package/docs/advanced-utilities.zh-TW.md +0 -132
  28. package/docs/advanced-utilities.zh.md +0 -132
  29. package/docs/advanced.ja.md +0 -95
  30. package/docs/advanced.md +0 -95
  31. package/docs/advanced.zh-TW.md +0 -95
  32. package/docs/advanced.zh.md +0 -95
  33. package/docs/api-reference.ja.md +0 -178
  34. package/docs/api-reference.md +0 -178
  35. package/docs/api-reference.zh-TW.md +0 -178
  36. package/docs/api-reference.zh.md +0 -178
  37. package/docs/assets/diagram/core-components-session-provider-01.ja.jpg +0 -0
  38. package/docs/assets/diagram/core-components-session-provider-01.jpg +0 -0
  39. package/docs/assets/diagram/core-components-session-provider-01.zh-TW.jpg +0 -0
  40. package/docs/assets/diagram/core-components-session-provider-01.zh.jpg +0 -0
  41. package/docs/assets/diagram/did-connect-diagram-0.ja.jpg +0 -0
  42. package/docs/assets/diagram/did-connect-diagram-0.jpg +0 -0
  43. package/docs/assets/diagram/did-connect-diagram-0.zh-TW.jpg +0 -0
  44. package/docs/assets/diagram/did-connect-diagram-0.zh.jpg +0 -0
  45. package/docs/assets/diagram/overview-01.ja.jpg +0 -0
  46. package/docs/assets/diagram/overview-01.jpg +0 -0
  47. package/docs/assets/diagram/overview-01.zh-TW.jpg +0 -0
  48. package/docs/assets/diagram/overview-01.zh.jpg +0 -0
  49. package/docs/assets/diagram/use-connect-diagram-0.ja.jpg +0 -0
  50. package/docs/assets/diagram/use-connect-diagram-0.jpg +0 -0
  51. package/docs/assets/diagram/use-connect-diagram-0.zh-TW.jpg +0 -0
  52. package/docs/assets/diagram/use-connect-diagram-0.zh.jpg +0 -0
  53. package/docs/core-components-did-connect.ja.md +0 -166
  54. package/docs/core-components-did-connect.md +0 -166
  55. package/docs/core-components-did-connect.zh-TW.md +0 -166
  56. package/docs/core-components-did-connect.zh.md +0 -166
  57. package/docs/core-components-session-provider.ja.md +0 -197
  58. package/docs/core-components-session-provider.md +0 -197
  59. package/docs/core-components-session-provider.zh-TW.md +0 -197
  60. package/docs/core-components-session-provider.zh.md +0 -197
  61. package/docs/core-components.ja.md +0 -16
  62. package/docs/core-components.md +0 -16
  63. package/docs/core-components.zh-TW.md +0 -16
  64. package/docs/core-components.zh.md +0 -16
  65. package/docs/getting-started.ja.md +0 -138
  66. package/docs/getting-started.md +0 -138
  67. package/docs/getting-started.zh-TW.md +0 -138
  68. package/docs/getting-started.zh.md +0 -138
  69. package/docs/hooks-use-connect.ja.md +0 -178
  70. package/docs/hooks-use-connect.md +0 -178
  71. package/docs/hooks-use-connect.zh-TW.md +0 -178
  72. package/docs/hooks-use-connect.zh.md +0 -178
  73. package/docs/hooks-use-did.ja.md +0 -107
  74. package/docs/hooks-use-did.md +0 -107
  75. package/docs/hooks-use-did.zh-TW.md +0 -107
  76. package/docs/hooks-use-did.zh.md +0 -107
  77. package/docs/hooks-use-oauth-passkey.ja.md +0 -188
  78. package/docs/hooks-use-oauth-passkey.md +0 -188
  79. package/docs/hooks-use-oauth-passkey.zh-TW.md +0 -188
  80. package/docs/hooks-use-oauth-passkey.zh.md +0 -188
  81. package/docs/hooks.ja.md +0 -23
  82. package/docs/hooks.md +0 -23
  83. package/docs/hooks.zh-TW.md +0 -23
  84. package/docs/hooks.zh.md +0 -23
  85. package/docs/overview.ja.md +0 -119
  86. package/docs/overview.md +0 -119
  87. package/docs/overview.zh-TW.md +0 -119
  88. package/docs/overview.zh.md +0 -119
  89. package/docs/ui-components-address.ja.md +0 -121
  90. package/docs/ui-components-address.md +0 -121
  91. package/docs/ui-components-address.zh-TW.md +0 -121
  92. package/docs/ui-components-address.zh.md +0 -121
  93. package/docs/ui-components-avatar.ja.md +0 -65
  94. package/docs/ui-components-avatar.md +0 -65
  95. package/docs/ui-components-avatar.zh-TW.md +0 -65
  96. package/docs/ui-components-avatar.zh.md +0 -65
  97. package/docs/ui-components-button.ja.md +0 -99
  98. package/docs/ui-components-button.md +0 -99
  99. package/docs/ui-components-button.zh-TW.md +0 -99
  100. package/docs/ui-components-button.zh.md +0 -99
  101. package/docs/ui-components-logo.ja.md +0 -52
  102. package/docs/ui-components-logo.md +0 -52
  103. package/docs/ui-components-logo.zh-TW.md +0 -52
  104. package/docs/ui-components-logo.zh.md +0 -52
  105. package/docs/ui-components.ja.md +0 -57
  106. package/docs/ui-components.md +0 -57
  107. package/docs/ui-components.zh-TW.md +0 -57
  108. package/docs/ui-components.zh.md +0 -57
  109. package/glossary.md +0 -1
  110. package/src/Address/index.jsx +0 -2
  111. package/src/Avatar/index.jsx +0 -2
  112. package/src/Button/Button.stories.jsx +0 -7
  113. package/src/Button/index.jsx +0 -21
  114. package/src/Connect/Connect.stories.jsx +0 -34
  115. package/src/Connect/assets/locale.js +0 -149
  116. package/src/Connect/assets/login-bg.png +0 -0
  117. package/src/Connect/assets/login-slogan.js +0 -7
  118. package/src/Connect/components/action-button.jsx +0 -22
  119. package/src/Connect/components/app-tips.jsx +0 -156
  120. package/src/Connect/components/auto-height.jsx +0 -38
  121. package/src/Connect/components/back-button.jsx +0 -24
  122. package/src/Connect/components/connect-status.jsx +0 -259
  123. package/src/Connect/components/did-connect-title.jsx +0 -107
  124. package/src/Connect/components/download-tips.jsx +0 -55
  125. package/src/Connect/components/loading.jsx +0 -25
  126. package/src/Connect/components/login-item/connect-choose-list.jsx +0 -317
  127. package/src/Connect/components/login-item/connect-provider-list.jsx +0 -462
  128. package/src/Connect/components/login-item/login-method-item.jsx +0 -139
  129. package/src/Connect/components/login-item/mobile-login-item.jsx +0 -181
  130. package/src/Connect/components/login-item/passkey-login-item.jsx +0 -54
  131. package/src/Connect/components/login-item/wallet-login-options.jsx +0 -129
  132. package/src/Connect/components/login-item/web-login-item.jsx +0 -157
  133. package/src/Connect/components/mask-overlay.jsx +0 -32
  134. package/src/Connect/components/refresh-overlay.jsx +0 -52
  135. package/src/Connect/components/switch-app.jsx +0 -69
  136. package/src/Connect/connect.jsx +0 -617
  137. package/src/Connect/contexts/state.jsx +0 -234
  138. package/src/Connect/fallback-connect.jsx +0 -47
  139. package/src/Connect/fullpage.jsx +0 -3
  140. package/src/Connect/hooks/auth-url.js +0 -31
  141. package/src/Connect/hooks/method-list.js +0 -121
  142. package/src/Connect/hooks/page-show.js +0 -24
  143. package/src/Connect/hooks/provider-list.js +0 -165
  144. package/src/Connect/hooks/security.js +0 -40
  145. package/src/Connect/hooks/token.js +0 -627
  146. package/src/Connect/hooks/use-apps.js +0 -69
  147. package/src/Connect/hooks/use-quick-connect.js +0 -119
  148. package/src/Connect/index.jsx +0 -21
  149. package/src/Connect/landing-page.jsx +0 -3
  150. package/src/Connect/plugins/email/index.jsx +0 -85
  151. package/src/Connect/plugins/email/list-item.jsx +0 -34
  152. package/src/Connect/plugins/email/placeholder.jsx +0 -365
  153. package/src/Connect/plugins/index.js +0 -2
  154. package/src/Connect/use-connect.jsx +0 -321
  155. package/src/Connect/with-blocklet.jsx +0 -26
  156. package/src/Connect/with-bridge-call.jsx +0 -138
  157. package/src/Federated/context.jsx +0 -93
  158. package/src/Federated/index.jsx +0 -1
  159. package/src/Logo/index.jsx +0 -2
  160. package/src/OAuth/bind-conflict-alert.jsx +0 -37
  161. package/src/OAuth/context.jsx +0 -407
  162. package/src/OAuth/guest.svg +0 -20
  163. package/src/OAuth/index.jsx +0 -1
  164. package/src/OAuth/passport-switcher.jsx +0 -2
  165. package/src/Passkey/actions.jsx +0 -217
  166. package/src/Passkey/constants.js +0 -2
  167. package/src/Passkey/context.jsx +0 -395
  168. package/src/Passkey/dialog.jsx +0 -401
  169. package/src/Passkey/icon.jsx +0 -10
  170. package/src/Passkey/index.jsx +0 -2
  171. package/src/Service/index.jsx +0 -96
  172. package/src/Session/assets/did-spaces-guide-cover.svg +0 -1
  173. package/src/Session/assets/did-spaces-guide-icon.svg +0 -7
  174. package/src/Session/context.jsx +0 -7
  175. package/src/Session/did-spaces-guide.jsx +0 -173
  176. package/src/Session/handler.jsx +0 -98
  177. package/src/Session/hooks/use-federated.js +0 -91
  178. package/src/Session/hooks/use-mobile.jsx +0 -6
  179. package/src/Session/hooks/use-protected-routes.js +0 -16
  180. package/src/Session/hooks/use-session-token.js +0 -400
  181. package/src/Session/hooks/use-verify.jsx +0 -76
  182. package/src/Session/index.jsx +0 -1789
  183. package/src/Session/libs/constants.js +0 -17
  184. package/src/Session/libs/did-spaces.js +0 -38
  185. package/src/Session/libs/federated.js +0 -82
  186. package/src/Session/libs/index.js +0 -5
  187. package/src/Session/libs/locales.js +0 -160
  188. package/src/Session/libs/login-mobile.js +0 -80
  189. package/src/Session/window-focus-aware.jsx +0 -28
  190. package/src/SessionManager/index.jsx +0 -2
  191. package/src/Storage/engine/cookie.js +0 -25
  192. package/src/Storage/engine/local-storage.js +0 -57
  193. package/src/Storage/index.js +0 -25
  194. package/src/User/index.js +0 -4
  195. package/src/User/use-did.js +0 -80
  196. package/src/User/wrap-did.jsx +0 -18
  197. package/src/WebWalletSWKeeper/index.jsx +0 -3
  198. package/src/components/PassportSwitcher.jsx +0 -160
  199. package/src/constant.js +0 -27
  200. package/src/error.js +0 -6
  201. package/src/hooks/use-locale.jsx +0 -6
  202. package/src/index.js +0 -32
  203. package/src/locales/en.jsx +0 -15
  204. package/src/locales/index.jsx +0 -13
  205. package/src/locales/zh.jsx +0 -15
  206. package/src/types.d.ts +0 -355
  207. package/src/utils.js +0 -413
  208. package/vite.config.mjs +0 -29
@@ -1,197 +0,0 @@
1
- # 会话管理 (SessionProvider)
2
-
3
- `SessionProvider` 是 `@arcblock/did-connect-react` 库的基石。它是一个 React Context Provider,封装了所有与会话相关的逻辑、状态和操作。通过使用 `SessionProvider` 包装您的应用程序,您可以将用户的会话信息和身份验证方法提供给应用程序树中的任何组件,而无需手动向下传递 props。
4
-
5
- 该组件处理从存储会话令牌和管理用户数据到协调登录/注销流程以及自动刷新会话的所有事务。
6
-
7
- ## 工作原理
8
-
9
- `SessionProvider` 创建一个会话上下文,该上下文持有当前用户的状态(`user` 对象、`loading` 状态等)并提供修改该状态的函数(例如 `login`、`logout`)。嵌套在 `SessionProvider` 中的任何组件都可以订阅此上下文以访问此数据并触​​发身份验证操作。
10
-
11
- 下图说明了基本架构:
12
-
13
- <!-- DIAGRAM_IMAGE_START:architecture:4:3:1765962229 -->
14
- ![Session Management (SessionProvider)](assets/diagram/core-components-session-provider-01.zh.jpg)
15
- <!-- DIAGRAM_IMAGE_END -->
16
-
17
- ## 快速入门
18
-
19
- 要使用会话管理功能,您首先需要导入 `SessionProvider` 并用它包装您的应用程序。该库导出工厂函数以创建配置好的 provider。
20
-
21
- ### 基本设置
22
-
23
- 设置 provider 的最常见方法是使用 `createAuthServiceSessionContext`,它已为在 ArcBlock 生态系统 (Blocklets) 中运行的应用程序预先配置。
24
-
25
- ```javascript App.js icon=logos:javascript
26
- import React from 'react';
27
- import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
28
- import AuthButton from './AuthButton';
29
-
30
- // 创建 SessionProvider 和一个用于访问上下文的 hook
31
- const { SessionProvider, SessionContext } = createAuthServiceSessionContext();
32
-
33
- export const useSession = () => React.useContext(SessionContext);
34
-
35
- export default function App() {
36
- return (
37
- <SessionProvider>
38
- <div className="App">
39
- <h1>Welcome to DID Connect</h1>
40
- <AuthButton />
41
- </div>
42
- </SessionProvider>
43
- );
44
- }
45
- ```
46
-
47
- ```javascript AuthButton.js icon=logos:javascript
48
- import React from 'react';
49
- import { useSession } from './App';
50
-
51
- export default function AuthButton() {
52
- const { session } = useSession();
53
-
54
- if (session.loading) {
55
- return <div>Loading...</div>;
56
- }
57
-
58
- if (session.user) {
59
- return (
60
- <div>
61
- <p>Welcome, {session.user.fullName || session.user.did}</p>
62
- <button onClick={() => session.logout()}>Logout</button>
63
- </div>
64
- );
65
- }
66
-
67
- return <button onClick={() => session.login()}>Login</button>;
68
- }
69
- ```
70
-
71
- 在此示例中,`createAuthServiceSessionContext` 生成一个 `SessionProvider`。我们用它包装我们的 `App`,现在任何子组件,例如 `AuthButton`,都可以使用 `useSession` hook 来访问会话数据和函数。
72
-
73
- ## SessionProvider Props
74
-
75
- 您可以通过向 `SessionProvider` 传递各种 props 来配置其行为。
76
-
77
- <x-field-group>
78
- <x-field data-name="serviceHost" data-type="string" data-desc="身份验证服务后端的基 URL。默认为当前 Blocklet 的前缀或 '/'。"></x-field>
79
- <x-field data-name="autoConnect" data-type="boolean" data-default="false" data-desc="如果为 true,在页面加载时若未找到用户会话,则 DID Connect 对话框将自动打开。"></x-field>
80
- <x-field data-name="autoDisconnect" data-type="boolean" data-default="true" data-desc="如果为 true,当应用程序 ID 与会话 cookie 中存储的 ID 不匹配时,会话将自动清除。"></x-field>
81
- <x-field data-name="protectedRoutes" data-type="string[]" data-default='["*"]' data-desc="用于保护的路由模式数组。如果未经身份验证的用户尝试访问这些路由,他们将看到一个加载指示器,直到会话被解析。支持通配符 (*)。"></x-field>
82
- <x-field data-name="locale" data-type="string" data-desc="设置 DID Connect UI 的显示语言。默认为浏览器语言。"></x-field>
83
- <x-field data-name="webWalletUrl" data-type="string" data-desc="用于连接过程的基于 Web 的 DID Wallet 的 URL。"></x-field>
84
- <x-field data-name="timeout" data-type="number" data-default="120000" data-desc="在连接过程中等待 DID Wallet 响应的超时时间(以毫秒为单位)。"></x-field>
85
- <x-field data-name="useSocket" data-type="boolean" data-default="true" data-desc="决定是否使用 WebSocket 与钱包进行实时通信,以提供更快的用户体验。"></x-field>
86
- <x-field data-name="extraParams" data-type="object" data-desc="一个包含额外参数的对象,这些参数将随每次身份验证请求发送到后端。"></x-field>
87
- </x-field-group>
88
-
89
- ## 会话上下文对象
90
-
91
- 当您使用 `SessionContext` 时,会得到一个包含会话状态和 API 的对象。主要属性是 `session`,它包含了您将要交互的所有数据和方法。
92
-
93
- ### 状态属性
94
-
95
- 这些是描述用户会话当前状态的只读属性。
96
-
97
- <x-field-group>
98
- <x-field data-name="user" data-type="User | null" data-desc="如果存在会话,则为经过身份验证的用户对象,否则为 null。包含 DID、姓名、电子邮件、头像等详细信息。"></x-field>
99
- <x-field data-name="loading" data-type="boolean" data-desc="在会话初始化、刷新或登录/注销过程中为 True。"></x-field>
100
- <x-field data-name="initialized" data-type="boolean" data-desc="页面加载时初始会话检查完成后为 True。"></x-field>
101
- <x-field data-name="open" data-type="boolean" data-desc="如果 DID Connect 对话框当前处于打开状态,则为 True。"></x-field>
102
- <x-field data-name="error" data-type="string" data-desc="如果上次会话操作失败,则包含错误消息。"></x-field>
103
- <x-field data-name="provider" data-type="string" data-desc="上次登录使用的提供商(例如 'wallet'、'github'、'google')。"></x-field>
104
- <x-field data-name="walletOS" data-type="string" data-desc="已连接的 DID Wallet 的操作系统(例如 'ios'、'android'、'web')。"></x-field>
105
- <x-field data-name="unReadCount" data-type="number" data-desc="当前用户的未读通知数量。"></x-field>
106
- </x-field-group>
107
-
108
- ### 操作方法
109
-
110
- 这些是您可以调用以启动身份验证流程或管理会话的函数。
111
-
112
- <x-field-group>
113
- <x-field data-name="login()" data-type="function">
114
- <x-field-desc markdown>通过打开 DID Connect UI 来启动用户登录过程。它接受可选的回调和参数。</x-field-desc>
115
- </x-field>
116
- <x-field data-name="logout()" data-type="function">
117
- <x-field-desc markdown>将当前用户登出,从存储中清除会话。它接受一个可选的回调函数,在完成后执行。</x-field-desc>
118
- </x-field>
119
- <x-field data-name="switchDid()" data-type="function">
120
- <x-field-desc markdown>允许已登录的用户切换到不同的 DID 账户。它会重新打开 DID Connect UI,并提供切换账户的上下文。</x-field-desc>
121
- </x-field>
122
- <x-field data-name="bindWallet()" data-type="function">
123
- <x-field-desc markdown>对于通过社交提供商(OAuth)或 Passkeys 登录的用户,此函数会启动一个流程,将 DID Wallet 连接到他们现有的账户。</x-field-desc>
124
- </x-field>
125
- <x-field data-name="refresh()" data-type="function">
126
- <x-field-desc markdown>手动触发从服务器刷新用户会话数据。可用于获取更新的个人资料信息或权限。</x-field-desc>
127
- </x-field>
128
- <x-field data-name="switchProfile()" data-type="function">
129
- <x-field-desc markdown>打开 DID Connect UI,允许用户在同一 DID 账户内的不同个人资料(例如,个人、工作)之间切换。</x-field-desc>
130
- </x-field>
131
- <x-field data-name="switchPassport()" data-type="function">
132
- <x-field-desc markdown>打开 DID Connect UI,允许用户在不同 passport 之间切换,这些 passport 可能代表不同的凭证或角色集。</x-field-desc>
133
- </x-field>
134
- <x-field data-name="connectToDidSpaceForFullAccess()" data-type="function">
135
- <x-field-desc markdown>启动与用户 DID Space 的连接,请求完全访问权限。这通常是需要在用户个人数据存储中读写数据的应用程序所必需的。</x-field-desc>
136
- </x-field>
137
- <x-field data-name="withSecondaryAuth()" data-type="function">
138
- <x-field-desc markdown>一个高阶函数,用于包装另一个函数,在执行被包装的函数之前,要求用户完成二次身份验证步骤(例如,重新输入密码、使用 passkey)。这是保护敏感操作的理想选择。</x-field-desc>
139
- </x-field>
140
- </x-field-group>
141
-
142
- ### 事件订阅
143
-
144
- 该上下文还提供一个 `events` 对象,它是 `EventEmitter3` 的一个实例。您可以使用它来订阅会话的各种生命周期事件。
145
-
146
- ```javascript EventListener.js icon=logos:javascript
147
- import React, { useEffect } from 'react';
148
- import { useSession } from './App';
149
-
150
- function EventListener() {
151
- const { events } = useSession();
152
-
153
- useEffect(() => {
154
- const handleLogin = (result) => {
155
- console.log('用户已登录:', result.user.did);
156
- };
157
-
158
- const handleLogout = () => {
159
- console.log('用户已登出');
160
- };
161
-
162
- events.on('login', handleLogin);
163
- events.on('logout', handleLogout);
164
-
165
- // 在组件卸载时清理监听器
166
- return () => {
167
- events.off('login', handleLogin);
168
- events.off('logout', handleLogout);
169
- };
170
- }, [events]);
171
-
172
- return null; // 此组件不渲染任何内容
173
- }
174
- ```
175
-
176
- 可用的事件包括 `login`、`login-failed`、`logout`、`change`、`bind-wallet`、`switch-passport` 等。
177
-
178
- ## 高级定制
179
-
180
- 对于需要不同存储机制或更精细控制的场景,您可以使用通用的 `createSessionContext` 工厂函数。
181
-
182
- ```javascript customSession.js icon=logos:javascript
183
- import { createSessionContext } from '@arcblock/did-connect-react/lib/Session';
184
-
185
- const { SessionProvider, SessionContext } = createSessionContext(
186
- 'my_app_session_token', // 自定义存储键
187
- 'ls', // 使用 localStorage 代替 cookie
188
- {},
189
- {
190
- rolling: false, // 禁用自动令牌刷新
191
- }
192
- );
193
-
194
- // ... 根据需要导出和使用
195
- ```
196
-
197
- 这允许您微调会话行为,例如将存储引擎更改为 `localStorage` ('ls') 或 `cookie`,或调整令牌刷新策略。
@@ -1,16 +0,0 @@
1
- # コアコンポーネント
2
-
3
- `@arcblock/did-connect-react` ライブラリは、分散型アイデンティティをアプリケーションに統合するための基盤を提供するいくつかの重要なコンポーネントを中心に構築されています。これらのコンポーネントは、セッション管理とユーザー向けの接続インターフェースを処理します。
4
-
5
- これら2つのコアコンポーネントを理解することは、ライブラリをマスターするための第一歩です。これらは連携して、シームレスで安全な認証体験を提供します。
6
-
7
- <x-cards data-columns="2">
8
- <x-card data-title="SessionProvider" data-icon="lucide:key-round" data-href="/core-components/session-provider">
9
- ライブラリの中心です。このプロバイダーはアプリケーションをラップして、ユーザーセッションの状態を管理し、認証ロジックを処理し、セッションデータと制御関数をすべてのネストされたコンポーネントに公開します。
10
- </x-card>
11
- <x-card data-title="DidConnect" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
12
- ユーザーインタラクションのための事前構築済みUIです。QRコード、ログインオプション(パスキーやOAuthなど)を表示し、接続フロー全体を処理します。通常、直接レンダリングするのではなく、プログラムで制御します。
13
- </x-card>
14
- </x-cards>
15
-
16
- まず、アプリケーション全体の状態を管理するために `SessionProvider` を設定する方法を学び、次に `DidConnect` コンポーネントがユーザー認証の過程をどのように促進するかを探ります。
@@ -1,16 +0,0 @@
1
- # Core Components
2
-
3
- The `@arcblock/did-connect-react` library is built around a few essential components that provide the foundation for integrating decentralized identity into your application. These components handle session management and the user-facing connection interface.
4
-
5
- Understanding these two core components is the first step to mastering the library. They work together to provide a seamless and secure authentication experience.
6
-
7
- <x-cards data-columns="2">
8
- <x-card data-title="SessionProvider" data-icon="lucide:key-round" data-href="/core-components/session-provider">
9
- The heart of the library. This provider wraps your application to manage user session state, handle authentication logic, and expose session data and control functions to all nested components.
10
- </x-card>
11
- <x-card data-title="DidConnect" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
12
- The pre-built UI for user interaction. It displays the QR code, login options (like Passkeys and OAuth), and handles the entire connection flow. You typically won't render it directly but control it programmatically.
13
- </x-card>
14
- </x-cards>
15
-
16
- Start by learning how to set up the `SessionProvider` to manage application-wide state, then explore how the `DidConnect` component facilitates the user authentication journey.
@@ -1,16 +0,0 @@
1
- # 核心元件
2
-
3
- `@arcblock/did-connect-react` 函式庫圍繞著幾個核心元件構建,這些元件為將去中心化身份整合到您的應用程式中提供了基礎。這些元件處理會話管理和使用者面向的連接介面。
4
-
5
- 理解這兩個核心元件是掌握此函式庫的第一步。它們共同提供無縫且安全的身份驗證體驗。
6
-
7
- <x-cards data-columns="2">
8
- <x-card data-title="SessionProvider" data-icon="lucide:key-round" data-href="/core-components/session-provider">
9
- 函式庫的核心。此提供者包裝您的應用程式,以管理使用者會話狀態、處理身份驗證邏輯,並將會話資料和控制函式公開給所有巢狀元件。
10
- </x-card>
11
- <x-card data-title="DidConnect" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
12
- 預先建置的使用者互動介面。它顯示 QR code、登入選項(如密碼金鑰和 OAuth),並處理整個連接流程。您通常不會直接渲染它,而是以程式化方式控制它。
13
- </x-card>
14
- </x-cards>
15
-
16
- 首先學習如何設定 `SessionProvider` 來管理應用程式範圍的狀態,然後探索 `DidConnect` 元件如何促進使用者身份驗證的旅程。
@@ -1,16 +0,0 @@
1
- # 核心组件
2
-
3
- `@arcblock/did-connect-react` 库围绕几个核心组件构建,它们为将去中心化身份集成到您的应用程序中提供了基础。这些组件处理会话管理和面向用户的连接界面。
4
-
5
- 理解这两个核心组件是掌握该库的第一步。它们协同工作,提供无缝且安全的身份验证体验。
6
-
7
- <x-cards data-columns="2">
8
- <x-card data-title="SessionProvider" data-icon="lucide:key-round" data-href="/core-components/session-provider">
9
- 该库的核心。此提供程序包裹您的应用程序,用于管理用户会话状态、处理身份验证逻辑,并向所有嵌套组件公开会话数据和控制函数。
10
- </x-card>
11
- <x-card data-title="DidConnect" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
12
- 用于用户交互的预构建 UI。它会显示二维码、登录选项(如 Passkeys 和 OAuth),并处理整个连接流程。您通常不会直接渲染它,而是以编程方式对其进行控制。
13
- </x-card>
14
- </x-cards>
15
-
16
- 首先学习如何设置 `SessionProvider` 来管理整个应用程序的状态,然后探索 `DidConnect` 组件如何为用户的身份验证过程提供便利。
@@ -1,138 +0,0 @@
1
- # はじめに
2
-
3
- このガイドでは、`@arcblock/did-connect-react` を使用して、Reactアプリケーションに分散型ID(DID)認証を統合するための基本的な手順を説明します。わずか数分で、完全に機能するログインおよびログアウトフローを実装できます。
4
-
5
- ### 前提条件
6
-
7
- 開始する前に、開発環境が次の基準を満たしていることを確認してください:
8
-
9
- - Reactプロジェクトがセットアップされていること。
10
- - 認証リクエストを処理するBlocklet Serverインスタンスが実行されていること。このライブラリは、Blocklet Serverをバックエンドとしてシームレスに動作するように設計されています。
11
-
12
- ## ステップ1:ライブラリをインストールする
13
-
14
- まず、`@arcblock/did-connect-react` パッケージをプロジェクトに追加します。npmまたはyarnのいずれかを使用できます。
15
-
16
- ```bash npmでインストール icon=logos:npm
17
- npm install @arcblock/did-connect-react
18
- ```
19
-
20
- ```bash yarnでインストール icon=logos:yarn
21
- yarn add @arcblock/did-connect-react
22
- ```
23
-
24
- ## ステップ2:SessionProviderをセットアップする
25
-
26
- `SessionProvider`はライブラリの中心です。これは、ユーザーのセッション状態(ログイン状態やユーザー情報など)を管理し、その内部でラップされたすべてのコンポーネントで利用可能にするコンテキストプロバイダーです。アプリケーションのルート、例えば`App.js`ファイルに配置する必要があります。
27
-
28
- Blocklet上に構築されたアプリケーションでは、`createAuthServiceSessionContext`ファクトリ関数を使用してプロバイダーを初期化することが推奨されます。
29
-
30
- ```javascript App.js icon=logos:react
31
- import React from 'react';
32
- import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
- import Home from './Home'; // このコンポーネントは次のステップで作成します
34
-
35
- // createAuthServiceSessionContextはBlocklet環境に最適化されています
36
- const { SessionProvider } = createAuthServiceSessionContext();
37
-
38
- function App() {
39
- return (
40
- // serviceHostプロパティは、バックエンド認証サービスのベースパスを指します。
41
- // 標準的なBlockletの場合、これは通常blockletのプレフィックスまたは'/'です。
42
- <SessionProvider serviceHost="/">
43
- <Home />
44
- </SessionProvider>
45
- );
46
- }
47
-
48
- export default App;
49
- ```
50
-
51
- ## ステップ3:ログインとログアウトを実装する
52
-
53
- 次に、ユーザーがログインおよびログアウトできるコンポーネントを作成しましょう。Reactの`useContext`フックと`SessionContext`を使用して、セッションデータと関数にアクセスできます。
54
-
55
- `session`オブジェクトは、現在の`user`、`loading`状態、そして`login()`や`logout()`のような関数など、必要なものすべてを提供します。
56
-
57
- ```javascript Home.js icon=logos:react
58
- import React, { useContext } from 'react';
59
- import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
- import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
- import Button from '@arcblock/ux/lib/Button'; // 汎用ボタン
62
- import CircularProgress from '@mui/material/CircularProgress';
63
-
64
- function Home() {
65
- // セッションコンテキストにアクセス
66
- const { session } = useContext(SessionContext);
67
-
68
- // アクセスしやすいように分割代入
69
- const { user, loading, login, logout } = session;
70
-
71
- // セッションが初期化されている間、ローディングインジケーターを表示
72
- if (loading) {
73
- return <CircularProgress />;
74
- }
75
-
76
- return (
77
- <div style={{ padding: '20px', textAlign: 'center' }}>
78
- {user ? (
79
- // ユーザーがログインしている場合は、DIDとログアウトボタンを表示
80
- <div>
81
- <h1>ようこそ!</h1>
82
- <p>あなたのDID: {user.did}</p>
83
- <Button variant="contained" color="secondary" onClick={logout}>
84
- ログアウト
85
- </Button>
86
- </div>
87
- ) : (
88
- // ログインしていない場合は、ログインボタンを表示
89
- <div>
90
- <h1>サインインしてください</h1>
91
- <ConnectButton onClick={() => login()}>
92
- ウォレットに接続
93
- </ConnectButton>
94
- </div>
95
- )}
96
- </div>
97
- );
98
- }
99
-
100
- export default Home;
101
- ```
102
-
103
- ユーザーが`ConnectButton`をクリックすると、`login()`関数が呼び出されます。この関数は、ユーザーがDID WalletでスキャンするためのQRコードを表示するDID Connectモーダルを開き、認証プロセス全体を管理します。
104
-
105
- ## ステップ4:ユーザーデータにアクセスする
106
-
107
- ユーザーが正常にログインすると、`session.user`オブジェクトが入力されます。このオブジェクトには、ユーザーのDID Walletから取得したプロファイル情報が含まれています。
108
-
109
- コンテキストによって提供される`session`オブジェクトは、ユーザーの認証状態への主要なインターフェースです。以下にその主要なプロパティを示します:
110
-
111
- <x-field-group>
112
- <x-field data-name="user" data-type="object | null" data-desc="認証されたユーザーオブジェクト。ユーザーがログインしていない場合は`null`です。">
113
- <x-field data-name="did" data-type="string" data-desc="ユーザーの分散型識別子(DID)。"></x-field>
114
- <x-field data-name="fullName" data-type="string" data-desc="ウォレットプロファイルからのユーザーのフルネーム。"></x-field>
115
- <x-field data-name="email" data-type="string" data-desc="ウォレットプロファイルからのユーザーのメールアドレス。"></x-field>
116
- </x-field>
117
- <x-field data-name="loading" data-type="boolean" data-desc="セッションが初期化または更新されている間は`true`、それ以外は`false`。"></x-field>
118
- <x-field data-name="login" data-type="function" data-desc="ログインプロセスを開始する関数。DID Connect UIを開きます。"></x-field>
119
- <x-field data-name="logout" data-type="function" data-desc="ユーザーをログアウトさせ、セッションをクリアする関数。"></x-field>
120
- <x-field data-name="initialized" data-type="boolean" data-desc="初期セッションチェックが完了すると`true`になります。"></x-field>
121
- </x-field-group>
122
-
123
- ## これで完了です!
124
-
125
- おめでとうございます!ReactアプリケーションにDIDベースの認証フローを完全に実装しました。ユーザーはDID Walletを使用してサインインでき、アプリケーションは安全にセッション情報にアクセスできます。
126
-
127
- ### 次のステップ
128
-
129
- さらに深く掘り下げ、より高度な機能を探求するには、次のセクションをご覧ください:
130
-
131
- <x-cards>
132
- <x-card data-title="セッション管理(SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
- `SessionProvider`のすべての設定オプションについて学び、セッションの挙動やタイムアウトなどをカスタマイズします。
134
- </x-card>
135
- <x-card data-title="接続UI(DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
- `DidConnect`コンポーネントを探索し、接続UIをページに直接埋め込む宣言的な方法を学びます。
137
- </x-card>
138
- </x-cards>
@@ -1,138 +0,0 @@
1
- # Getting Started
2
-
3
- This guide will walk you through the essential steps to integrate decentralized identity (DID) authentication into your React application using `@arcblock/did-connect-react`. In just a few minutes, you'll have a fully functional login and logout flow.
4
-
5
- ### Prerequisites
6
-
7
- Before you begin, ensure your development environment meets the following criteria:
8
-
9
- - You have a React project set up.
10
- - You have a running Blocklet Server instance that will handle the authentication requests. The library is designed to work seamlessly with a backend powered by Blocklet Server.
11
-
12
- ## Step 1: Install the Library
13
-
14
- First, add the `@arcblock/did-connect-react` package to your project. You can use either npm or yarn.
15
-
16
- ```bash Install with npm icon=logos:npm
17
- npm install @arcblock/did-connect-react
18
- ```
19
-
20
- ```bash Install with yarn icon=logos:yarn
21
- yarn add @arcblock/did-connect-react
22
- ```
23
-
24
- ## Step 2: Set Up the SessionProvider
25
-
26
- The `SessionProvider` is the heart of the library. It's a context provider that manages the user's session state (like login status and user information) and makes it available to all components wrapped within it. You should place it at the root of your application, for instance, in your `App.js` file.
27
-
28
- For applications built on Blocklet, the recommended way to initialize the provider is by using the `createAuthServiceSessionContext` factory function.
29
-
30
- ```javascript App.js icon=logos:react
31
- import React from 'react';
32
- import { createAuthServiceSessionContext } from '@arcblock/did-connect-react/lib/Session';
33
- import Home from './Home'; // We will create this component in the next step
34
-
35
- // createAuthServiceSessionContext is optimized for Blocklet environments
36
- const { SessionProvider } = createAuthServiceSessionContext();
37
-
38
- function App() {
39
- return (
40
- // The serviceHost prop points to the base path of your backend authentication service.
41
- // For a standard Blocklet, this is usually the blocklet's prefix or '/'.
42
- <SessionProvider serviceHost="/">
43
- <Home />
44
- </SessionProvider>
45
- );
46
- }
47
-
48
- export default App;
49
- ```
50
-
51
- ## Step 3: Implement Login and Logout
52
-
53
- Now, let's create a component that allows users to log in and log out. We can access the session data and functions using React's `useContext` hook with the `SessionContext`.
54
-
55
- The `session` object gives you everything you need: the current `user`, the `loading` state, and functions like `login()` and `logout()`.
56
-
57
- ```javascript Home.js icon=logos:react
58
- import React, { useContext } from 'react';
59
- import { SessionContext } from '@arcblock/did-connect-react/lib/Session';
60
- import ConnectButton from '@arcblock/did-connect-react/lib/Button';
61
- import Button from '@arcblock/ux/lib/Button'; // A general-purpose button
62
- import CircularProgress from '@mui/material/CircularProgress';
63
-
64
- function Home() {
65
- // Access the session context
66
- const { session } = useContext(SessionContext);
67
-
68
- // Destructure for easier access
69
- const { user, loading, login, logout } = session;
70
-
71
- // Display a loading indicator while the session is being initialized
72
- if (loading) {
73
- return <CircularProgress />;
74
- }
75
-
76
- return (
77
- <div style={{ padding: '20px', textAlign: 'center' }}>
78
- {user ? (
79
- // If the user is logged in, show their DID and a logout button
80
- <div>
81
- <h1>Welcome!</h1>
82
- <p>Your DID: {user.did}</p>
83
- <Button variant="contained" color="secondary" onClick={logout}>
84
- Logout
85
- </Button>
86
- </div>
87
- ) : (
88
- // If not logged in, show the login button
89
- <div>
90
- <h1>Please Sign In</h1>
91
- <ConnectButton onClick={() => login()}>
92
- Connect Wallet
93
- </ConnectButton>
94
- </div>
95
- )}
96
- </div>
97
- );
98
- }
99
-
100
- export default Home;
101
- ```
102
-
103
- When the user clicks the `ConnectButton`, the `login()` function is called. This function handles opening the DID Connect modal, which displays a QR code for the user to scan with their DID Wallet, and manages the entire authentication process.
104
-
105
- ## Step 4: Access User Data
106
-
107
- Once a user has successfully logged in, the `session.user` object will be populated. This object contains the user's profile information retrieved from their DID Wallet.
108
-
109
- The `session` object provided by the context is your main interface to the user's authentication state. Here are its key properties:
110
-
111
- <x-field-group>
112
- <x-field data-name="user" data-type="object | null" data-desc="The authenticated user object. It's `null` if no user is logged in.">
113
- <x-field data-name="did" data-type="string" data-desc="The user's Decentralized Identifier (DID)."></x-field>
114
- <x-field data-name="fullName" data-type="string" data-desc="The user's full name from their wallet profile."></x-field>
115
- <x-field data-name="email" data-type="string" data-desc="The user's email from their wallet profile."></x-field>
116
- </x-field>
117
- <x-field data-name="loading" data-type="boolean" data-desc="`true` while the session is being initialized or refreshed, `false` otherwise."></x-field>
118
- <x-field data-name="login" data-type="function" data-desc="A function to initiate the login process, which opens the DID Connect UI."></x-field>
119
- <x-field data-name="logout" data-type="function" data-desc="A function to log the user out and clear the session."></x-field>
120
- <x-field data-name="initialized" data-type="boolean" data-desc="`true` once the initial session check is complete."></x-field>
121
- </x-field-group>
122
-
123
- ## You're All Set!
124
-
125
- Congratulations! You have successfully implemented a complete DID-based authentication flow in your React application. Users can now sign in using their DID Wallet, and your application can securely access their session information.
126
-
127
- ### Next Steps
128
-
129
- To dive deeper and explore more advanced features, check out the following sections:
130
-
131
- <x-cards>
132
- <x-card data-title="Session Management (SessionProvider)" data-icon="lucide:key-round" data-href="/core-components/session-provider">
133
- Learn about all the configuration options for `SessionProvider` to customize session behavior, timeouts, and more.
134
- </x-card>
135
- <x-card data-title="Connection UI (DidConnect)" data-icon="lucide:qr-code" data-href="/core-components/did-connect">
136
- Explore the `DidConnect` component for a declarative way to embed the connection UI directly into your pages.
137
- </x-card>
138
- </x-cards>