@atproto/oauth-provider 0.5.0 → 0.5.2
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.
- package/CHANGELOG.md +16 -0
- package/dist/account/account-store.d.ts +6 -5
- package/dist/account/account-store.d.ts.map +1 -1
- package/dist/account/account-store.js +24 -8
- package/dist/account/account-store.js.map +1 -1
- package/dist/account/sign-up-data.d.ts +2 -2
- package/dist/assets/app/bundle-manifest.json +185 -185
- package/dist/assets/app/{index-ItwwtJ8r.js → index-DZHZ9kCP.js} +2 -2
- package/dist/assets/app/{index-ItwwtJ8r.js.map → index-DZHZ9kCP.js.map} +1 -1
- package/dist/assets/app/{main-CSatvmRR.js → main-Dr6y26KY.js} +48 -48
- package/dist/assets/app/{main-CSatvmRR.js.map → main-Dr6y26KY.js.map} +1 -1
- package/dist/assets/app/messages-6_mYuGzB.js +4 -0
- package/dist/assets/app/messages-6_mYuGzB.js.map +1 -0
- package/dist/assets/app/messages-7wdeBTpD.js +4 -0
- package/dist/assets/app/messages-7wdeBTpD.js.map +1 -0
- package/dist/assets/app/messages-B-YFoWKc.js +4 -0
- package/dist/assets/app/messages-B-YFoWKc.js.map +1 -0
- package/dist/assets/app/messages-B10DUOE-.js +4 -0
- package/dist/assets/app/messages-B10DUOE-.js.map +1 -0
- package/dist/assets/app/messages-B4AwFEeZ.js +4 -0
- package/dist/assets/app/messages-B4AwFEeZ.js.map +1 -0
- package/dist/assets/app/messages-BDP8MyEC.js +4 -0
- package/dist/assets/app/messages-BDP8MyEC.js.map +1 -0
- package/dist/assets/app/messages-BIS87lxQ.js +4 -0
- package/dist/assets/app/messages-BIS87lxQ.js.map +1 -0
- package/dist/assets/app/messages-BI_Wbjdt.js +4 -0
- package/dist/assets/app/messages-BI_Wbjdt.js.map +1 -0
- package/dist/assets/app/messages-BMAouhRx.js +4 -0
- package/dist/assets/app/messages-BMAouhRx.js.map +1 -0
- package/dist/assets/app/messages-BdckMnJj.js +4 -0
- package/dist/assets/app/messages-BdckMnJj.js.map +1 -0
- package/dist/assets/app/messages-BgBLzc46.js +4 -0
- package/dist/assets/app/messages-BgBLzc46.js.map +1 -0
- package/dist/assets/app/messages-BobD78yK.js +4 -0
- package/dist/assets/app/messages-BobD78yK.js.map +1 -0
- package/dist/assets/app/messages-BtThT9UZ.js +4 -0
- package/dist/assets/app/messages-BtThT9UZ.js.map +1 -0
- package/dist/assets/app/messages-BwKHkbeh.js +4 -0
- package/dist/assets/app/messages-BwKHkbeh.js.map +1 -0
- package/dist/assets/app/messages-C417YUvA.js +4 -0
- package/dist/assets/app/messages-C417YUvA.js.map +1 -0
- package/dist/assets/app/messages-C4CxO4bO.js +4 -0
- package/dist/assets/app/messages-C4CxO4bO.js.map +1 -0
- package/dist/assets/app/messages-C5vd04e6.js +4 -0
- package/dist/assets/app/messages-C5vd04e6.js.map +1 -0
- package/dist/assets/app/messages-CAri2Wnz.js +4 -0
- package/dist/assets/app/messages-CAri2Wnz.js.map +1 -0
- package/dist/assets/app/messages-CPtWTZeG.js +4 -0
- package/dist/assets/app/messages-CPtWTZeG.js.map +1 -0
- package/dist/assets/app/messages-CiaM5zm8.js +4 -0
- package/dist/assets/app/messages-CiaM5zm8.js.map +1 -0
- package/dist/assets/app/messages-CkL-L2R6.js +4 -0
- package/dist/assets/app/messages-CkL-L2R6.js.map +1 -0
- package/dist/assets/app/messages-Cy_4XLNe.js +4 -0
- package/dist/assets/app/messages-Cy_4XLNe.js.map +1 -0
- package/dist/assets/app/messages-D5_ad-Eo.js +4 -0
- package/dist/assets/app/messages-D5_ad-Eo.js.map +1 -0
- package/dist/assets/app/messages-DChMl9mT.js +4 -0
- package/dist/assets/app/messages-DChMl9mT.js.map +1 -0
- package/dist/assets/app/messages-DWX-DIfv.js +4 -0
- package/dist/assets/app/messages-DWX-DIfv.js.map +1 -0
- package/dist/assets/app/messages-DgfsOphe.js +4 -0
- package/dist/assets/app/messages-DgfsOphe.js.map +1 -0
- package/dist/assets/app/messages-Dj5B_DR6.js +4 -0
- package/dist/assets/app/messages-Dj5B_DR6.js.map +1 -0
- package/dist/assets/app/messages-Dwzqo4eA.js +4 -0
- package/dist/assets/app/messages-Dwzqo4eA.js.map +1 -0
- package/dist/assets/app/messages-ESCIXJR7.js +4 -0
- package/dist/assets/app/messages-ESCIXJR7.js.map +1 -0
- package/dist/assets/app/messages-dglB2edb.js +4 -0
- package/dist/assets/app/messages-dglB2edb.js.map +1 -0
- package/dist/assets/app/messages-e_ClRrWc.js +4 -0
- package/dist/assets/app/messages-e_ClRrWc.js.map +1 -0
- package/dist/assets/app/messages-evvDxmrP.js +4 -0
- package/dist/assets/app/messages-evvDxmrP.js.map +1 -0
- package/dist/assets/app/messages-pPbdLb5B.js +4 -0
- package/dist/assets/app/messages-pPbdLb5B.js.map +1 -0
- package/dist/assets/app/messages-tJv8gHL2.js +4 -0
- package/dist/assets/app/messages-tJv8gHL2.js.map +1 -0
- package/dist/assets/app/messages-vLRVEw96.js +4 -0
- package/dist/assets/app/messages-vLRVEw96.js.map +1 -0
- package/dist/errors/invalid-invite-code-error.d.ts +5 -0
- package/dist/errors/invalid-invite-code-error.d.ts.map +1 -0
- package/dist/errors/invalid-invite-code-error.js +11 -0
- package/dist/errors/invalid-invite-code-error.js.map +1 -0
- package/dist/errors/oauth-error.d.ts +2 -2
- package/dist/errors/oauth-error.js.map +1 -1
- package/dist/oauth-errors.d.ts +1 -0
- package/dist/oauth-errors.d.ts.map +1 -1
- package/dist/oauth-errors.js +3 -1
- package/dist/oauth-errors.js.map +1 -1
- package/dist/oauth-provider.d.ts +3 -3
- package/dist/oauth-provider.d.ts.map +1 -1
- package/dist/oauth-provider.js +24 -23
- package/dist/oauth-provider.js.map +1 -1
- package/dist/output/build-customization-data.d.ts +20 -11
- package/dist/output/build-customization-data.d.ts.map +1 -1
- package/dist/output/build-customization-data.js +72 -43
- package/dist/output/build-customization-data.js.map +1 -1
- package/package.json +4 -3
- package/src/account/account-store.ts +21 -6
- package/src/assets/app/components/forms/input-checkbox.tsx +12 -7
- package/src/assets/app/components/forms/input-email-address.tsx +2 -3
- package/src/assets/app/components/forms/input-password.tsx +2 -3
- package/src/assets/app/components/forms/input-text.tsx +6 -0
- package/src/assets/app/components/utils/error-message.tsx +30 -4
- package/src/assets/app/lib/api.ts +25 -3
- package/src/assets/app/locales/an/messages.po +51 -53
- package/src/assets/app/locales/ast/messages.po +51 -53
- package/src/assets/app/locales/ca/messages.po +51 -53
- package/src/assets/app/locales/da/messages.po +51 -53
- package/src/assets/app/locales/de/messages.po +51 -53
- package/src/assets/app/locales/el/messages.po +51 -53
- package/src/assets/app/locales/en/messages.po +51 -53
- package/src/assets/app/locales/en-GB/messages.po +51 -53
- package/src/assets/app/locales/es/messages.po +51 -53
- package/src/assets/app/locales/eu/messages.po +51 -53
- package/src/assets/app/locales/fi/messages.po +51 -53
- package/src/assets/app/locales/fr/messages.po +52 -54
- package/src/assets/app/locales/ga/messages.po +51 -53
- package/src/assets/app/locales/gl/messages.po +51 -53
- package/src/assets/app/locales/hi/messages.po +51 -53
- package/src/assets/app/locales/hu/messages.po +51 -53
- package/src/assets/app/locales/ia/messages.po +51 -53
- package/src/assets/app/locales/id/messages.po +51 -53
- package/src/assets/app/locales/it/messages.po +51 -53
- package/src/assets/app/locales/ja/messages.po +51 -53
- package/src/assets/app/locales/km/messages.po +51 -53
- package/src/assets/app/locales/ko/messages.po +51 -53
- package/src/assets/app/locales/ne/messages.po +51 -53
- package/src/assets/app/locales/nl/messages.po +51 -53
- package/src/assets/app/locales/pl/messages.po +51 -53
- package/src/assets/app/locales/pt-BR/messages.po +51 -53
- package/src/assets/app/locales/ro/messages.po +51 -53
- package/src/assets/app/locales/ru/messages.po +51 -53
- package/src/assets/app/locales/sv/messages.po +51 -53
- package/src/assets/app/locales/th/messages.po +51 -53
- package/src/assets/app/locales/tr/messages.po +51 -53
- package/src/assets/app/locales/uk/messages.po +51 -53
- package/src/assets/app/locales/vi/messages.po +51 -53
- package/src/assets/app/locales/zh-CN/messages.po +51 -53
- package/src/assets/app/locales/zh-HK/messages.po +51 -53
- package/src/assets/app/locales/zh-TW/messages.po +51 -53
- package/src/assets/app/views/authorize/reset-password/reset-password-confirm-form.tsx +1 -1
- package/src/assets/app/views/authorize/sign-in/sign-in-form.tsx +3 -5
- package/src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx +7 -5
- package/src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx +0 -2
- package/src/errors/invalid-invite-code-error.ts +10 -0
- package/src/errors/oauth-error.ts +1 -1
- package/src/oauth-errors.ts +1 -0
- package/src/oauth-provider.ts +45 -35
- package/src/output/build-customization-data.ts +89 -50
- package/tsconfig.backend.tsbuildinfo +1 -1
- package/dist/assets/app/messages-BQeltXSF.js +0 -4
- package/dist/assets/app/messages-BQeltXSF.js.map +0 -1
- package/dist/assets/app/messages-BQkEhfjg.js +0 -4
- package/dist/assets/app/messages-BQkEhfjg.js.map +0 -1
- package/dist/assets/app/messages-BUjKj_UJ.js +0 -4
- package/dist/assets/app/messages-BUjKj_UJ.js.map +0 -1
- package/dist/assets/app/messages-BWIQa8fO.js +0 -4
- package/dist/assets/app/messages-BWIQa8fO.js.map +0 -1
- package/dist/assets/app/messages-BaNVb0bp.js +0 -4
- package/dist/assets/app/messages-BaNVb0bp.js.map +0 -1
- package/dist/assets/app/messages-BaizVXcF.js +0 -4
- package/dist/assets/app/messages-BaizVXcF.js.map +0 -1
- package/dist/assets/app/messages-BfoClA1Y.js +0 -4
- package/dist/assets/app/messages-BfoClA1Y.js.map +0 -1
- package/dist/assets/app/messages-BsKGDZnC.js +0 -4
- package/dist/assets/app/messages-BsKGDZnC.js.map +0 -1
- package/dist/assets/app/messages-Bu-TJhml.js +0 -4
- package/dist/assets/app/messages-Bu-TJhml.js.map +0 -1
- package/dist/assets/app/messages-BvOKnBQk.js +0 -4
- package/dist/assets/app/messages-BvOKnBQk.js.map +0 -1
- package/dist/assets/app/messages-BxDzCiWz.js +0 -4
- package/dist/assets/app/messages-BxDzCiWz.js.map +0 -1
- package/dist/assets/app/messages-CDgFOy4S.js +0 -4
- package/dist/assets/app/messages-CDgFOy4S.js.map +0 -1
- package/dist/assets/app/messages-CLbTz0o9.js +0 -4
- package/dist/assets/app/messages-CLbTz0o9.js.map +0 -1
- package/dist/assets/app/messages-CNwSh0t7.js +0 -4
- package/dist/assets/app/messages-CNwSh0t7.js.map +0 -1
- package/dist/assets/app/messages-CSMNJ6P8.js +0 -4
- package/dist/assets/app/messages-CSMNJ6P8.js.map +0 -1
- package/dist/assets/app/messages-CZQUw3mp.js +0 -4
- package/dist/assets/app/messages-CZQUw3mp.js.map +0 -1
- package/dist/assets/app/messages-CZT41oVp.js +0 -4
- package/dist/assets/app/messages-CZT41oVp.js.map +0 -1
- package/dist/assets/app/messages-C_b-d3t8.js +0 -4
- package/dist/assets/app/messages-C_b-d3t8.js.map +0 -1
- package/dist/assets/app/messages-C_u3MTc2.js +0 -4
- package/dist/assets/app/messages-C_u3MTc2.js.map +0 -1
- package/dist/assets/app/messages-Cn8nHZic.js +0 -4
- package/dist/assets/app/messages-Cn8nHZic.js.map +0 -1
- package/dist/assets/app/messages-CtDywJUm.js +0 -4
- package/dist/assets/app/messages-CtDywJUm.js.map +0 -1
- package/dist/assets/app/messages-CurtIjBF.js +0 -4
- package/dist/assets/app/messages-CurtIjBF.js.map +0 -1
- package/dist/assets/app/messages-Cv6zIbaP.js +0 -4
- package/dist/assets/app/messages-Cv6zIbaP.js.map +0 -1
- package/dist/assets/app/messages-D1eLQuPE.js +0 -4
- package/dist/assets/app/messages-D1eLQuPE.js.map +0 -1
- package/dist/assets/app/messages-D8vHEaYW.js +0 -4
- package/dist/assets/app/messages-D8vHEaYW.js.map +0 -1
- package/dist/assets/app/messages-DJ1Q4GeC.js +0 -4
- package/dist/assets/app/messages-DJ1Q4GeC.js.map +0 -1
- package/dist/assets/app/messages-DRL3exqd.js +0 -4
- package/dist/assets/app/messages-DRL3exqd.js.map +0 -1
- package/dist/assets/app/messages-DWLPQRTp.js +0 -4
- package/dist/assets/app/messages-DWLPQRTp.js.map +0 -1
- package/dist/assets/app/messages-DjVaE9YE.js +0 -4
- package/dist/assets/app/messages-DjVaE9YE.js.map +0 -1
- package/dist/assets/app/messages-DqpMfFJR.js +0 -4
- package/dist/assets/app/messages-DqpMfFJR.js.map +0 -1
- package/dist/assets/app/messages-ETjhJBEN.js +0 -4
- package/dist/assets/app/messages-ETjhJBEN.js.map +0 -1
- package/dist/assets/app/messages-EUKrgrGn.js +0 -4
- package/dist/assets/app/messages-EUKrgrGn.js.map +0 -1
- package/dist/assets/app/messages-QQrOUcPW.js +0 -4
- package/dist/assets/app/messages-QQrOUcPW.js.map +0 -1
- package/dist/assets/app/messages-e2QGqFL6.js +0 -4
- package/dist/assets/app/messages-e2QGqFL6.js.map +0 -1
- package/dist/assets/app/messages-p61py7gD.js +0 -4
- package/dist/assets/app/messages-p61py7gD.js.map +0 -1
- /package/dist/assets/app/{main-CSatvmRR.css → main-Dr6y26KY.css} +0 -0
@@ -17,11 +17,11 @@ msgstr ""
|
|
17
17
|
msgid "<0/> is asking for permission to access your account (<1/>)."
|
18
18
|
msgstr ""
|
19
19
|
|
20
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
20
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:219
|
21
21
|
msgid "2FA Confirmation"
|
22
22
|
msgstr ""
|
23
23
|
|
24
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
24
|
+
#: src/assets/app/components/utils/error-message.tsx:27
|
25
25
|
msgid "A second authentication factor is required"
|
26
26
|
msgstr ""
|
27
27
|
|
@@ -45,7 +45,7 @@ msgstr ""
|
|
45
45
|
msgid "An application on your device"
|
46
46
|
msgstr ""
|
47
47
|
|
48
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
48
|
+
#: src/assets/app/components/utils/error-message.tsx:87
|
49
49
|
msgid "An unknown error occurred"
|
50
50
|
msgstr ""
|
51
51
|
|
@@ -78,8 +78,6 @@ msgstr ""
|
|
78
78
|
msgid "By clicking <0>Authorize</0>, you allow this application to perform the following actions in accordance with their <1>terms of service</1> and <2>privacy policy</2>:"
|
79
79
|
msgstr ""
|
80
80
|
|
81
|
-
#. placeholder {0}: tosLink ? ( <LinkAnchor className="text-brand underline" link={tosLink}> <Trans>Terms of Service</Trans> </LinkAnchor> ) : ( <Trans>Terms of Service</Trans> )
|
82
|
-
#. placeholder {1}: ppLink ? ( <LinkAnchor className="text-brand underline" link={ppLink}> <Trans>Privacy Policy</Trans> </LinkAnchor> ) : ( <Trans>Privacy Policy</Trans> )
|
83
81
|
#: src/assets/app/views/authorize/sign-up/sign-up-disclaimer.tsx:30
|
84
82
|
msgid "By creating an account you agree to the {0} and the {1} of this service."
|
85
83
|
msgstr ""
|
@@ -89,8 +87,7 @@ msgstr ""
|
|
89
87
|
msgid "Cancel"
|
90
88
|
msgstr ""
|
91
89
|
|
92
|
-
|
93
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:234
|
90
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:232
|
94
91
|
msgid "Check your {0} email for a login code and enter it here."
|
95
92
|
msgstr ""
|
96
93
|
|
@@ -110,7 +107,7 @@ msgstr ""
|
|
110
107
|
msgid "Confirm your password to continue"
|
111
108
|
msgstr ""
|
112
109
|
|
113
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
110
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:223
|
114
111
|
msgid "Confirmation code"
|
115
112
|
msgstr ""
|
116
113
|
|
@@ -130,19 +127,17 @@ msgstr ""
|
|
130
127
|
msgid "Description"
|
131
128
|
msgstr ""
|
132
129
|
|
133
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:
|
134
|
-
#: src/assets/app/components/forms/input-email-address.tsx:49
|
135
|
-
#: src/assets/app/components/forms/input-email-address.tsx:50
|
136
|
-
#: src/assets/app/components/forms/input-email-address.tsx:51
|
130
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:114
|
137
131
|
msgid "Email"
|
138
132
|
msgstr ""
|
139
133
|
|
140
134
|
#: src/assets/app/views/authorize/reset-password/reset-password-request-form.tsx:55
|
141
135
|
#: src/assets/app/views/authorize/reset-password/reset-password-request-form.tsx:60
|
136
|
+
#: src/assets/app/components/forms/input-email-address.tsx:51
|
142
137
|
msgid "Email address"
|
143
138
|
msgstr ""
|
144
139
|
|
145
|
-
#: src/assets/app/components/forms/input-new-password.tsx:
|
140
|
+
#: src/assets/app/components/forms/input-new-password.tsx:44
|
146
141
|
msgid "Enter a password"
|
147
142
|
msgstr ""
|
148
143
|
|
@@ -158,7 +153,7 @@ msgstr ""
|
|
158
153
|
msgid "Enter your email address"
|
159
154
|
msgstr ""
|
160
155
|
|
161
|
-
#: src/assets/app/components/forms/input-new-password.tsx:
|
156
|
+
#: src/assets/app/components/forms/input-new-password.tsx:45
|
162
157
|
msgid "Enter your new password"
|
163
158
|
msgstr ""
|
164
159
|
|
@@ -175,6 +170,10 @@ msgstr ""
|
|
175
170
|
msgid "Error"
|
176
171
|
msgstr ""
|
177
172
|
|
173
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:102
|
174
|
+
msgid "example-com-xxxxx-xxxxx"
|
175
|
+
msgstr ""
|
176
|
+
|
178
177
|
#: src/assets/app/components/utils/password-strength-label.tsx:25
|
179
178
|
msgid "Extra"
|
180
179
|
msgstr ""
|
@@ -183,11 +182,10 @@ msgstr ""
|
|
183
182
|
msgid "Forgot Password"
|
184
183
|
msgstr ""
|
185
184
|
|
186
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
185
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:178
|
187
186
|
msgid "Forgot?"
|
188
187
|
msgstr ""
|
189
188
|
|
190
|
-
#. placeholder {0}: account.preferred_username || account.email || account.sub
|
191
189
|
#: src/assets/app/views/authorize/accept/accept-view.tsx:40
|
192
190
|
msgid "Grant access to your <0>{0}</0> account"
|
193
191
|
msgstr ""
|
@@ -212,13 +210,12 @@ msgstr ""
|
|
212
210
|
msgid "Interface language selector"
|
213
211
|
msgstr ""
|
214
212
|
|
215
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:
|
213
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:275
|
216
214
|
msgid "Invalid"
|
217
215
|
msgstr ""
|
218
216
|
|
219
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:
|
220
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:
|
221
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:100
|
217
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:96
|
218
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:101
|
222
219
|
msgid "Invite code"
|
223
220
|
msgstr ""
|
224
221
|
|
@@ -272,9 +269,7 @@ msgstr ""
|
|
272
269
|
msgid "Only letters, numbers, and hyphens"
|
273
270
|
msgstr ""
|
274
271
|
|
275
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:
|
276
|
-
#: src/assets/app/components/forms/input-password.tsx:51
|
277
|
-
#: src/assets/app/components/forms/input-password.tsx:52
|
272
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-account-form.tsx:128
|
278
273
|
#: src/assets/app/components/forms/input-password.tsx:53
|
279
274
|
msgid "Password"
|
280
275
|
msgstr ""
|
@@ -295,11 +290,11 @@ msgstr ""
|
|
295
290
|
msgid "Password updated!"
|
296
291
|
msgstr ""
|
297
292
|
|
298
|
-
#: src/assets/app/components/forms/input-new-password.tsx:
|
293
|
+
#: src/assets/app/components/forms/input-new-password.tsx:46
|
299
294
|
msgid "Password with at least {MIN_PASSWORD_LENGTH} characters"
|
300
295
|
msgstr ""
|
301
296
|
|
302
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
297
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:192
|
303
298
|
msgid "Please verify the domain name of the website before entering your password. Never enter your password on a domain you do not trust."
|
304
299
|
msgstr ""
|
305
300
|
|
@@ -309,8 +304,8 @@ msgstr ""
|
|
309
304
|
msgid "Privacy Policy"
|
310
305
|
msgstr ""
|
311
306
|
|
312
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
313
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
307
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:206
|
308
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:211
|
314
309
|
msgid "Remember this account on this device"
|
315
310
|
msgstr ""
|
316
311
|
|
@@ -326,11 +321,11 @@ msgstr ""
|
|
326
321
|
msgid "Reset Password"
|
327
322
|
msgstr ""
|
328
323
|
|
329
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
324
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:176
|
330
325
|
msgid "Reset your password"
|
331
326
|
msgstr ""
|
332
327
|
|
333
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:
|
328
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:196
|
334
329
|
msgid "Select domain"
|
335
330
|
msgstr ""
|
336
331
|
|
@@ -338,7 +333,7 @@ msgstr ""
|
|
338
333
|
msgid "Select from an existing account"
|
339
334
|
msgstr ""
|
340
335
|
|
341
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
336
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:202
|
342
337
|
msgid "Session"
|
343
338
|
msgstr ""
|
344
339
|
|
@@ -348,7 +343,6 @@ msgstr ""
|
|
348
343
|
msgid "Sign in"
|
349
344
|
msgstr ""
|
350
345
|
|
351
|
-
#. placeholder {0}: account.name
|
352
346
|
#: src/assets/app/views/authorize/sign-in/sign-in-picker.tsx:75
|
353
347
|
msgid "Sign in as {0}"
|
354
348
|
msgstr ""
|
@@ -383,45 +377,55 @@ msgstr ""
|
|
383
377
|
msgid "Terms of Service"
|
384
378
|
msgstr ""
|
385
379
|
|
386
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
380
|
+
#: src/assets/app/components/utils/error-message.tsx:52
|
387
381
|
msgid "That handle cannot be used"
|
388
382
|
msgstr ""
|
389
383
|
|
390
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
384
|
+
#: src/assets/app/components/utils/error-message.tsx:69
|
385
|
+
msgid "The data you submitted is invalid. Please check the form and try again."
|
386
|
+
msgstr ""
|
387
|
+
|
388
|
+
#: src/assets/app/components/utils/error-message.tsx:43
|
391
389
|
msgid "The domain name is not allowed"
|
392
390
|
msgstr ""
|
393
391
|
|
394
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
392
|
+
#: src/assets/app/components/utils/error-message.tsx:45
|
395
393
|
msgid "The handle contains inappropriate language"
|
396
394
|
msgstr ""
|
397
395
|
|
398
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
396
|
+
#: src/assets/app/components/utils/error-message.tsx:50
|
399
397
|
msgid "The handle is already in use"
|
400
398
|
msgstr ""
|
401
399
|
|
402
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
400
|
+
#: src/assets/app/components/utils/error-message.tsx:41
|
403
401
|
msgid "The handle is invalid"
|
404
402
|
msgstr ""
|
405
403
|
|
406
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
404
|
+
#: src/assets/app/components/utils/error-message.tsx:35
|
405
|
+
msgid "The invite code is not valid"
|
406
|
+
msgstr ""
|
407
|
+
|
408
|
+
#: src/assets/app/components/utils/error-message.tsx:77
|
409
|
+
msgid "This authorization request has been denied. Please try again."
|
410
|
+
msgstr ""
|
411
|
+
|
412
|
+
#: src/assets/app/components/utils/error-message.tsx:57
|
407
413
|
msgid "This email is already used"
|
408
414
|
msgstr ""
|
409
415
|
|
410
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
416
|
+
#: src/assets/app/components/utils/error-message.tsx:48
|
411
417
|
msgid "This handle is reserved"
|
412
418
|
msgstr ""
|
413
419
|
|
414
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
420
|
+
#: src/assets/app/components/utils/error-message.tsx:64
|
415
421
|
msgid "This sign-in session has expired"
|
416
422
|
msgstr ""
|
417
423
|
|
418
424
|
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:166
|
419
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:167
|
420
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:168
|
421
425
|
msgid "Type your desired username"
|
422
426
|
msgstr ""
|
423
427
|
|
424
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
428
|
+
#: src/assets/app/components/utils/error-message.tsx:84
|
425
429
|
msgid "Unexpected server response"
|
426
430
|
msgstr ""
|
427
431
|
|
@@ -430,23 +434,18 @@ msgid "Uniquely identify you"
|
|
430
434
|
msgstr ""
|
431
435
|
|
432
436
|
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:143
|
433
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:144
|
434
437
|
msgid "Username or email address"
|
435
438
|
msgstr ""
|
436
439
|
|
437
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:
|
440
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:270
|
438
441
|
msgid "Valid"
|
439
442
|
msgstr ""
|
440
443
|
|
441
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:154
|
442
|
-
msgid "Valid email address or username"
|
443
|
-
msgstr ""
|
444
|
-
|
445
444
|
#: src/assets/app/views/authorize/sign-up/sign-up-view.tsx:135
|
446
445
|
msgid "Verify you are human"
|
447
446
|
msgstr ""
|
448
447
|
|
449
|
-
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:
|
448
|
+
#: src/assets/app/views/authorize/sign-in/sign-in-form.tsx:189
|
450
449
|
msgid "Warning"
|
451
450
|
msgstr ""
|
452
451
|
|
@@ -458,7 +457,7 @@ msgstr ""
|
|
458
457
|
msgid "Weak"
|
459
458
|
msgstr ""
|
460
459
|
|
461
|
-
#: src/assets/app/components/utils/error-message.tsx:
|
460
|
+
#: src/assets/app/components/utils/error-message.tsx:31
|
462
461
|
msgid "Wrong identifier or password"
|
463
462
|
msgstr ""
|
464
463
|
|
@@ -466,7 +465,7 @@ msgstr ""
|
|
466
465
|
msgid "You are being redirected..."
|
467
466
|
msgstr ""
|
468
467
|
|
469
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:
|
468
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:235
|
470
469
|
msgid "You can change this username to any domain name you control after your account is set up."
|
471
470
|
msgstr ""
|
472
471
|
|
@@ -482,8 +481,7 @@ msgstr ""
|
|
482
481
|
msgid "Your account"
|
483
482
|
msgstr ""
|
484
483
|
|
485
|
-
|
486
|
-
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:219
|
484
|
+
#: src/assets/app/views/authorize/sign-up/sign-up-handle-form.tsx:217
|
487
485
|
msgid "Your full username will be: {0}"
|
488
486
|
msgstr ""
|
489
487
|
|
@@ -140,8 +140,7 @@ export function SignInForm({
|
|
140
140
|
icon={<AtSymbolIcon className="w-5" />}
|
141
141
|
name="username"
|
142
142
|
type="text"
|
143
|
-
|
144
|
-
aria-label={t`Username or email address`}
|
143
|
+
title={t`Username or email address`}
|
145
144
|
autoCapitalize="none"
|
146
145
|
autoCorrect="off"
|
147
146
|
autoComplete="username"
|
@@ -151,7 +150,6 @@ export function SignInForm({
|
|
151
150
|
required
|
152
151
|
readOnly={usernameReadonly}
|
153
152
|
disabled={usernameReadonly}
|
154
|
-
title={t`Valid email address or username`}
|
155
153
|
autoFocus
|
156
154
|
value={username}
|
157
155
|
onChange={(event) => {
|
@@ -205,7 +203,7 @@ export function SignInForm({
|
|
205
203
|
>
|
206
204
|
<InputCheckbox
|
207
205
|
name="remember"
|
208
|
-
|
206
|
+
title={t`Remember this account on this device`}
|
209
207
|
enterKeyHint={secondFactor ? 'next' : 'done'}
|
210
208
|
checked={remember}
|
211
209
|
onChange={(event) => setRemember(event.target.checked)}
|
@@ -222,7 +220,7 @@ export function SignInForm({
|
|
222
220
|
>
|
223
221
|
<div>
|
224
222
|
<InputToken
|
225
|
-
|
223
|
+
title={t`Confirmation code`}
|
226
224
|
enterKeyHint="done"
|
227
225
|
required
|
228
226
|
autoFocus={true}
|
@@ -8,7 +8,8 @@ import {
|
|
8
8
|
} from '../../../components/forms/form-card-async.tsx'
|
9
9
|
import { InputEmailAddress } from '../../../components/forms/input-email-address.tsx'
|
10
10
|
import { InputNewPassword } from '../../../components/forms/input-new-password.tsx'
|
11
|
-
import {
|
11
|
+
import { InputText } from '../../../components/forms/input-text.tsx'
|
12
|
+
import { TokenIcon } from '../../../components/utils/icons.tsx'
|
12
13
|
import { mergeRefs } from '../../../lib/ref.ts'
|
13
14
|
import { Override } from '../../../lib/util.ts'
|
14
15
|
|
@@ -93,15 +94,16 @@ export function SignUpAccountForm({
|
|
93
94
|
>
|
94
95
|
{inviteCodeRequired && (
|
95
96
|
<Fieldset label={<Trans>Invite code</Trans>}>
|
96
|
-
<
|
97
|
+
<InputText
|
98
|
+
icon={<TokenIcon className="w-5" />}
|
97
99
|
autoFocus
|
98
100
|
name="inviteCode"
|
99
|
-
aria-label={t`Invite code`}
|
100
101
|
title={t`Invite code`}
|
102
|
+
placeholder={t`example-com-xxxxx-xxxxx`}
|
101
103
|
required
|
102
|
-
value={inviteCode}
|
104
|
+
value={inviteCode || ''}
|
103
105
|
onChange={(event) => {
|
104
|
-
setInviteCode(event.target.value)
|
106
|
+
setInviteCode(event.target.value || undefined)
|
105
107
|
resetForm()
|
106
108
|
}}
|
107
109
|
enterKeyHint="next"
|
@@ -163,8 +163,6 @@ export function SignUpHandleForm({
|
|
163
163
|
icon={<AtSymbolIcon className="w-5" />}
|
164
164
|
name="handle"
|
165
165
|
type="text"
|
166
|
-
placeholder={t`Type your desired username`}
|
167
|
-
aria-label={t`Type your desired username`}
|
168
166
|
title={t`Type your desired username`}
|
169
167
|
pattern="[a-z0-9][a-z0-9\-]+[a-z0-9]"
|
170
168
|
minLength={minLength}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { InvalidRequestError } from './invalid-request-error'
|
2
|
+
|
3
|
+
export class InvalidInviteCodeError extends InvalidRequestError {
|
4
|
+
constructor(details?: string, cause?: unknown) {
|
5
|
+
super(
|
6
|
+
'This invite code is invalid.' + (details ? ` ${details}` : ''),
|
7
|
+
cause,
|
8
|
+
)
|
9
|
+
}
|
10
|
+
}
|
package/src/oauth-errors.ts
CHANGED
@@ -12,6 +12,7 @@ export { InvalidClientMetadataError } from './errors/invalid-client-metadata-err
|
|
12
12
|
export { InvalidDpopKeyBindingError } from './errors/invalid-dpop-key-binding-error.js'
|
13
13
|
export { InvalidDpopProofError } from './errors/invalid-dpop-proof-error.js'
|
14
14
|
export { InvalidGrantError } from './errors/invalid-grant-error.js'
|
15
|
+
export { InvalidInviteCodeError } from './errors/invalid-invite-code-error.js'
|
15
16
|
export { InvalidParametersError } from './errors/invalid-parameters-error.js'
|
16
17
|
export { InvalidRedirectUriError } from './errors/invalid-redirect-uri-error.js'
|
17
18
|
export { InvalidRequestError } from './errors/invalid-request-error.js'
|
package/src/oauth-provider.ts
CHANGED
@@ -103,8 +103,10 @@ import { OAuthHooks, SignInData, SignUpData } from './oauth-hooks.js'
|
|
103
103
|
import { OAuthVerifier, OAuthVerifierOptions } from './oauth-verifier.js'
|
104
104
|
import { AuthorizationResultAuthorize } from './output/build-authorize-data.js'
|
105
105
|
import {
|
106
|
-
|
106
|
+
Branding,
|
107
|
+
BrandingInput,
|
107
108
|
Customization,
|
109
|
+
CustomizationInput,
|
108
110
|
customizationSchema,
|
109
111
|
} from './output/build-customization-data.js'
|
110
112
|
import {
|
@@ -130,9 +132,11 @@ import { TokenStore, asTokenStore } from './token/token-store.js'
|
|
130
132
|
import { VerifyTokenClaimsOptions } from './token/verify-token-claims.js'
|
131
133
|
|
132
134
|
export {
|
133
|
-
type
|
135
|
+
type Branding,
|
136
|
+
type BrandingInput,
|
134
137
|
type CustomMetadata,
|
135
138
|
type Customization,
|
139
|
+
type CustomizationInput,
|
136
140
|
type Handler,
|
137
141
|
type HcaptchaConfig,
|
138
142
|
Keyset,
|
@@ -158,7 +162,7 @@ export type RouterOptions<
|
|
158
162
|
}
|
159
163
|
|
160
164
|
export type OAuthProviderOptions = Override<
|
161
|
-
OAuthVerifierOptions & OAuthHooks & DeviceManagerOptions &
|
165
|
+
OAuthVerifierOptions & OAuthHooks & DeviceManagerOptions & CustomizationInput,
|
162
166
|
{
|
163
167
|
/**
|
164
168
|
* Maximum age a device/account session can be before requiring
|
@@ -1141,28 +1145,27 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1141
1145
|
* Wrap an OAuth endpoint in a middleware that will set the appropriate
|
1142
1146
|
* response headers and format the response as JSON.
|
1143
1147
|
*/
|
1144
|
-
const jsonHandler = <T, TReq extends Req, TRes extends Res,
|
1145
|
-
buildJson: (
|
1146
|
-
|
1148
|
+
const jsonHandler = <T, TReq extends Req, TRes extends Res, Payload>(
|
1149
|
+
buildJson: (
|
1150
|
+
this: T,
|
1151
|
+
req: TReq,
|
1152
|
+
res: TRes,
|
1153
|
+
) => Awaitable<{ payload: Payload; status?: number }>,
|
1147
1154
|
): Handler<T, TReq, TRes> =>
|
1148
1155
|
async function (req, res) {
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
}
|
1156
|
+
// https://www.rfc-editor.org/rfc/rfc6749.html#section-5.1
|
1157
|
+
res.setHeader('Cache-Control', 'no-store')
|
1158
|
+
res.setHeader('Pragma', 'no-cache')
|
1159
|
+
|
1160
|
+
// Ensure we can agree on a content encoding & type before starting to
|
1161
|
+
// build the JSON response.
|
1162
|
+
if (!negotiateContent(req, ['application/json'])) {
|
1163
|
+
throw createHttpError(406, 'Unsupported media type')
|
1164
|
+
}
|
1159
1165
|
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
} else if (!res.headersSent) {
|
1164
|
-
res.writeHead(status ?? 204).end()
|
1165
|
-
}
|
1166
|
+
try {
|
1167
|
+
const { payload, status = 200 } = await buildJson.call(this, req, res)
|
1168
|
+
writeJson(res, payload, { status })
|
1166
1169
|
} catch (err) {
|
1167
1170
|
onError?.(req, res, err, 'OAuth request error')
|
1168
1171
|
|
@@ -1176,13 +1179,13 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1176
1179
|
}
|
1177
1180
|
}
|
1178
1181
|
|
1179
|
-
const oauthHandler = <T, TReq extends Req, TRes extends Res,
|
1180
|
-
buildOAuthResponse: (this: T, req: TReq, res: TRes) => Awaitable<
|
1182
|
+
const oauthHandler = <T, TReq extends Req, TRes extends Res, Payload>(
|
1183
|
+
buildOAuthResponse: (this: T, req: TReq, res: TRes) => Awaitable<Payload>,
|
1181
1184
|
status?: number,
|
1182
1185
|
) =>
|
1183
1186
|
combineMiddlewares([
|
1184
1187
|
corsHeaders,
|
1185
|
-
jsonHandler<T, TReq, TRes,
|
1188
|
+
jsonHandler<T, TReq, TRes, Payload>(async function (req, res) {
|
1186
1189
|
try {
|
1187
1190
|
// https://datatracker.ietf.org/doc/html/rfc9449#section-8.2
|
1188
1191
|
const dpopNonce = server.nextDpopNonce()
|
@@ -1192,7 +1195,8 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1192
1195
|
res.appendHeader('Access-Control-Expose-Headers', name)
|
1193
1196
|
}
|
1194
1197
|
|
1195
|
-
|
1198
|
+
const payload = await buildOAuthResponse.call(this, req, res)
|
1199
|
+
return { payload, status }
|
1196
1200
|
} catch (err) {
|
1197
1201
|
if (!res.headersSent && err instanceof WWWAuthenticateError) {
|
1198
1202
|
const name = 'WWW-Authenticate'
|
@@ -1202,7 +1206,7 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1202
1206
|
|
1203
1207
|
throw err
|
1204
1208
|
}
|
1205
|
-
}
|
1209
|
+
}),
|
1206
1210
|
])
|
1207
1211
|
|
1208
1212
|
const apiHandler = <
|
@@ -1210,7 +1214,7 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1210
1214
|
TReq extends Req,
|
1211
1215
|
TRes extends Res,
|
1212
1216
|
S extends z.ZodTypeAny,
|
1213
|
-
|
1217
|
+
Payload,
|
1214
1218
|
>(
|
1215
1219
|
inputSchema: S,
|
1216
1220
|
buildJson: (
|
@@ -1219,10 +1223,10 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1219
1223
|
res: TRes,
|
1220
1224
|
input: z.infer<S>,
|
1221
1225
|
context: ApiContext,
|
1222
|
-
) =>
|
1226
|
+
) => Awaitable<Payload>,
|
1223
1227
|
status?: number,
|
1224
1228
|
) =>
|
1225
|
-
jsonHandler<T, TReq, TRes,
|
1229
|
+
jsonHandler<T, TReq, TRes, Payload>(async function (req, res) {
|
1226
1230
|
validateFetchMode(req, res, ['same-origin'])
|
1227
1231
|
validateFetchSite(req, res, ['same-origin'])
|
1228
1232
|
validateSameOrigin(req, res, issuerOrigin)
|
@@ -1248,12 +1252,13 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1248
1252
|
res,
|
1249
1253
|
)
|
1250
1254
|
|
1251
|
-
const
|
1252
|
-
const input = await inputSchema.parseAsync(
|
1255
|
+
const inputRaw = await parseHttpRequest(req, ['json'])
|
1256
|
+
const input = await inputSchema.parseAsync(inputRaw, { path: ['body'] })
|
1253
1257
|
|
1254
1258
|
const context: ApiContext = { requestUri, deviceId, deviceMetadata }
|
1255
|
-
|
1256
|
-
|
1259
|
+
const payload = await buildJson.call(this, req, res, input, context)
|
1260
|
+
return { payload, status }
|
1261
|
+
})
|
1257
1262
|
|
1258
1263
|
const navigationHandler = <T, TReq extends Req, TRes extends Res>(
|
1259
1264
|
handler: (this: T, req: TReq, res: TRes) => Awaitable<void>,
|
@@ -1474,6 +1479,8 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1474
1479
|
} catch (err) {
|
1475
1480
|
onError?.(req, res, err, 'Failed to revoke token')
|
1476
1481
|
}
|
1482
|
+
|
1483
|
+
return {}
|
1477
1484
|
}),
|
1478
1485
|
)
|
1479
1486
|
router.get(
|
@@ -1573,7 +1580,8 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1573
1580
|
apiHandler(
|
1574
1581
|
z.object({ handle: handleSchema }).strict(),
|
1575
1582
|
async function (req, res, data) {
|
1576
|
-
|
1583
|
+
await server.accountManager.verifyHandleAvailability(data.handle)
|
1584
|
+
return { available: true }
|
1577
1585
|
},
|
1578
1586
|
),
|
1579
1587
|
)
|
@@ -1598,6 +1606,7 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1598
1606
|
resetPasswordRequestDataSchema,
|
1599
1607
|
async function (req, res, data) {
|
1600
1608
|
await server.accountManager.resetPasswordRequest(data)
|
1609
|
+
return { success: true }
|
1601
1610
|
},
|
1602
1611
|
),
|
1603
1612
|
)
|
@@ -1608,6 +1617,7 @@ export class OAuthProvider extends OAuthVerifier {
|
|
1608
1617
|
resetPasswordConfirmDataSchema,
|
1609
1618
|
async function (req, res, data) {
|
1610
1619
|
await server.accountManager.resetPasswordConfirm(data)
|
1620
|
+
return { success: true }
|
1611
1621
|
},
|
1612
1622
|
),
|
1613
1623
|
)
|