[go: up one dir, main page]

Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[pull] master from logto-io:master #2

Open
wants to merge 2,061 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
2061 commits
Select commit Hold shift + click to select a range
ab90f43
fix(experience): prevent errors from applying unsupported cached iden…
xiaoyijun Aug 12, 2024
3824a75
feat(schemas): init personal access tokens table (#6383)
wangsijie Aug 12, 2024
b42b37b
chore: fix alteration timestamp (#6433)
wangsijie Aug 12, 2024
c791847
refactor: stop using GET /:tenantId/usage API and GET /tenants usage …
darcyYe Aug 12, 2024
86e76ff
feat(core): create PAT (#6388)
wangsijie Aug 13, 2024
22d0a06
feat(core): list PATs (#6389)
wangsijie Aug 13, 2024
fe054d5
feat(core): modify and delete PATs (#6390)
wangsijie Aug 13, 2024
da58dec
fix: update tenant selector dropdown data source (#6438)
darcyYe Aug 13, 2024
d9589c8
feat(experience): add identifier sign-in page (#6435)
xiaoyijun Aug 13, 2024
6a809e1
feat(experience): add identifier register page (#6437)
xiaoyijun Aug 13, 2024
ff6b304
fix(console): should not block custom JWT creation for OSS user (#6441)
darcyYe Aug 13, 2024
976558a
refactor(cli): rename proxy cli to tunnel (#6442)
charIeszhao Aug 14, 2024
db42279
feat(core): add experience APIs openapi docs (#6436)
simeng-li Aug 15, 2024
87ff8cb
refactor(console): separate subscription based usage (#6448)
darcyYe Aug 15, 2024
bb98ea8
fix(console): should be able to edit password and email in profile (#…
charIeszhao Aug 15, 2024
d2220f1
fix: fix console issues for add-on (#6443)
darcyYe Aug 15, 2024
0004d68
fix(console): fix add-on console issues
darcyYe Aug 15, 2024
bc83177
fix(console): fix add-on console issues
darcyYe Aug 15, 2024
bdb10db
chore: fix org footer copy
darcyYe Aug 15, 2024
ed2d386
chore: open Stripe payment management page in new tab
darcyYe Aug 15, 2024
e9e5b05
chore: fix MFA banner copy
darcyYe Aug 15, 2024
c0ca5b4
chore: fix add on notice footer
darcyYe Aug 15, 2024
50e4308
refactor(core): redesign get sso connectors endpoint (#6454)
simeng-li Aug 16, 2024
32a2d90
fix(console): fix enterprise SSO creation model button status
darcyYe Aug 16, 2024
04c533e
fix(console): fix code
darcyYe Aug 16, 2024
69208c3
Merge pull request #6452 from logto-io/yemq-fix-add-on-console-issues
darcyYe Aug 16, 2024
9674d5c
fix(core): fix google one tap validation error (#6455)
simeng-li Aug 16, 2024
26b976a
refactor(console): refactor tag component (#6453)
darcyYe Aug 16, 2024
737204e
feat(experience): add identifier sso-only landing page (#6440)
xiaoyijun Aug 16, 2024
f17526c
feat(core,experience,schemas): support identifier page related params…
xiaoyijun Aug 16, 2024
36f1055
chore(console): add display pricing change notice and update plan com…
darcyYe Aug 16, 2024
e9eb212
chore(experience): move shared form components into components file (…
xiaoyijun Aug 16, 2024
cea8aa1
feat(core): implement wellknown swagger endpoints (#6445)
simeng-li Aug 19, 2024
1817eaf
chore(console): update add on tag CSS (#6459)
darcyYe Aug 19, 2024
e4b0288
fix(console): fix impersonation tag in audit log (#6463)
wangsijie Aug 19, 2024
57974a1
fix(cli): should proxy google social callback url properly to exp ui …
charIeszhao Aug 19, 2024
0183d0c
refactor: split translate cmd from logto cli (#6451)
charIeszhao Aug 19, 2024
2362791
chore(core): remove devFeature guard (#6462)
simeng-li Aug 19, 2024
13bfa06
chore(console, core): remove dev features guard for bring your ui fea…
charIeszhao Aug 19, 2024
b549a7e
refactor(console,core): remove add on dev feature guard (#6466)
darcyYe Aug 19, 2024
5488107
fix(experience): update dev features flag env handling (#6467)
xiaoyijun Aug 19, 2024
b185bb7
fix(console): bring back accidentally deleted css file (#6468)
darcyYe Aug 19, 2024
f205aa7
test(experience): add integration tests for first screen feature (#6464)
xiaoyijun Aug 19, 2024
3440b3e
feat(console): add label for new experience API logs (#6469)
simeng-li Aug 19, 2024
746aa58
feat(core): token exchange by pat (#6450)
wangsijie Aug 19, 2024
e9b7b83
chore(console): fix add-on issues (#6470)
darcyYe Aug 19, 2024
1c6b932
feat(console): user personal access tokens (#6444)
wangsijie Aug 20, 2024
e0623df
fix(console): add add-on display issues and refactor component PlanNa…
darcyYe Aug 20, 2024
608d2ef
fix(console): manually trigger usage api updates (#6473)
darcyYe Aug 20, 2024
d467483
fix(experience): correct first screen fallbacks (#6472)
xiaoyijun Aug 20, 2024
818e2c6
fix(experience): smart input field should have correct initial type (…
xiaoyijun Aug 20, 2024
2caeaca
fix(console): fix next auth guide typo (#6478)
wangsijie Aug 21, 2024
763dd60
fix(console,core,connector): fix display issues and `POST /connectors…
darcyYe Aug 21, 2024
9279d4c
fix: translate cli workspace dependency reference (#6474)
charIeszhao Aug 21, 2024
332131a
fix(console): manually trigger usage api updates on org member deleti…
darcyYe Aug 21, 2024
56649b5
chore(console): add beta tag to bring your ui feature (#6484)
charIeszhao Aug 21, 2024
b8b7752
fix(console): fix console z index issue on modals and banners (#6483)
charIeszhao Aug 21, 2024
0ec8510
fix(experience): add sso form mode context provider for identifier si…
xiaoyijun Aug 21, 2024
fc512bc
refactor(console): remove protected app promotion (#6479)
charIeszhao Aug 21, 2024
3249674
chore(console): remove beta tag from 3rd party app (#6485)
charIeszhao Aug 21, 2024
c3bec68
Revert "Revert "refactor: add `report:subscription:updates` Cloud sco…
darcyYe Aug 21, 2024
a999c51
fix(core,console): disable quota guard and unblock resource creation …
darcyYe Aug 21, 2024
f04678e
fix: fix alteration script dependency (#6488)
darcyYe Aug 21, 2024
b61787e
style(experience): add missing brand-60 color token (#6490)
xiaoyijun Aug 21, 2024
19d3aa7
fix: make alteration script compatible for core DB in all regions (#6…
darcyYe Aug 22, 2024
00c2581
feat(console): add doc link of pat (#6496)
wangsijie Aug 22, 2024
f0bbc2a
feat(console): edit personal access token name (#6491)
wangsijie Aug 22, 2024
06f9863
fix(core): remove grant id of token exchange (#6497)
wangsijie Aug 22, 2024
5c81ed9
refactor(cli): show more info and add port in-use detection (#6495)
charIeszhao Aug 22, 2024
c51f3c5
fix(console): always show upsell notice for custom JWT (#6500)
darcyYe Aug 22, 2024
2ebc471
fix(core): remove the requirement of secured app for PAT (#6493)
wangsijie Aug 22, 2024
55cf84b
chore(core): add openapi operationId to experience APIs (#6486)
simeng-li Aug 22, 2024
50bbcb6
test: add integration tests for pat token introspection (#6501)
wangsijie Aug 22, 2024
fec844c
feat(experience): add reset password first screen (#6498)
xiaoyijun Aug 22, 2024
4be675a
fix(core): add grant record for token exchange (#6502)
wangsijie Aug 22, 2024
ad4e146
fix(console): use safeLazy to dynamically import guide mdx (#6503)
charIeszhao Aug 22, 2024
ed774bf
fix(console): change PAT and app secrets phrases (#6504)
wangsijie Aug 22, 2024
f1ecec5
fix(console): remove legacy charge notification components (#6505)
darcyYe Aug 22, 2024
8edbff2
chore: remove optimize deps config for local dev (#6506)
xiaoyijun Aug 22, 2024
14d25ba
fix(core,schemas): check email verification status in me api (#6507)
charIeszhao Aug 22, 2024
e0326c9
chore: add changeset (#6492)
wangsijie Aug 23, 2024
52056f9
chore: remove dev feature guard of PAT (#6499)
wangsijie Aug 23, 2024
13ae792
fix(phrases): fix pl and ru i18n phrases (#6510)
simeng-li Aug 23, 2024
83a72dc
fix(core): should be able to update password in profile if verified v…
charIeszhao Aug 23, 2024
1e35d1a
refactor(tunnel): split tunnel cli and make it a standalone package (…
charIeszhao Aug 23, 2024
61fb856
release: @logto/tunnel:0.1.0 (#6513)
charIeszhao Aug 23, 2024
3aba357
refactor(experience): improve identifier prefilling (#6508)
xiaoyijun Aug 24, 2024
53060c2
chore: add Arabic translation (#6422)
zaaakher Aug 25, 2024
f545716
fix(core): avoid unexpected 500 error (#6515)
simeng-li Aug 26, 2024
ef78823
refactor(experience): remove redundant `defaultType` prop for `SmartI…
xiaoyijun Aug 26, 2024
41ee881
refactor(experience): cache input identifier for reset password first…
xiaoyijun Aug 26, 2024
47d5a62
chore(experience): upgrade react-hook-form (#6520)
xiaoyijun Aug 27, 2024
0fec957
fix(experience): apply form default value to smart input filed (#6521)
xiaoyijun Aug 27, 2024
6951e31
feat(core): add `error_code_key` query string param (#6519)
simeng-li Aug 27, 2024
652898f
refactor: update language code to ar-SA (#6518)
gao-sun Aug 27, 2024
3d3a220
chore: remove dev feature guard for first screens (#6522)
xiaoyijun Aug 28, 2024
8beb758
refactor(core): refactor oidc error response query param (#6525)
simeng-li Aug 28, 2024
aba0892
feat: add Patreon connector (#6514)
devtekve Aug 28, 2024
347cd3b
fix(experience): avoid carring identifer from reset password page to …
xiaoyijun Aug 28, 2024
ee1947a
refactor(console): support entering name while creating a user (#6523)
gao-sun Aug 29, 2024
a0807d7
refactor(core,toolkit): relocate customJwt local vm handler (#6524)
simeng-li Sep 2, 2024
64547fd
chore(console): should use SKU to filter tenant dropdown and add disp…
darcyYe Sep 2, 2024
479d589
chore(schemas): bump withtyped version (#6537)
simeng-li Sep 2, 2024
31296f0
feat: add GitLab connector (#6529)
devtekve Sep 2, 2024
ff4cd67
feat(tunnel): support cli deploy custom ui assets to cloud (#6530)
charIeszhao Sep 3, 2024
b00ec49
refactor: flatten `UserSettings` component file structure (#6539)
xiaoyijun Sep 3, 2024
509e86e
fix(deps): update withtyped and cloud dependency version (#6538)
simeng-li Sep 3, 2024
b51680a
feat(core): add denyAccess api context to customJwt script (#6532)
simeng-li Sep 3, 2024
3103581
feat(console): add api context type declarations (#6533)
simeng-li Sep 4, 2024
a748fc8
fix(core): add `hasPassword` field to user API response (#6543)
xiaoyijun Sep 4, 2024
8d95132
feat(tunnel): support zip option in deploy command (#6541)
charIeszhao Sep 4, 2024
459daeb
release: @logto/tunnel:0.2.0 (#6547)
charIeszhao Sep 4, 2024
27d2c91
feat: add support for nested attribute profile mapping (#6534)
devtekve Sep 5, 2024
f150a67
feat(console): display user password information on user details page…
xiaoyijun Sep 6, 2024
c83fd6f
style(console): adjust sample code editor height (#6548)
simeng-li Sep 6, 2024
baa8577
refactor(experience): experience api migration (#6407)
simeng-li Sep 9, 2024
5f3c069
chore(console,phrases): update custom JWT phrases (#6551)
simeng-li Sep 9, 2024
b837efe
feat(console,core): remove custom token claims api context dev guard …
simeng-li Sep 9, 2024
3b9714b
refactor: set `lang` attribute for html tag (#6536)
gao-sun Sep 9, 2024
fae8725
refactor(console,core,demo-app,elements,experience): improve rtl supp…
charIeszhao Sep 9, 2024
862d27d
fix(core): fix custom UI not triggered bug (#6563)
simeng-li Sep 10, 2024
8b19004
fix: fix object comparison util method used in DB alteration CI (#6562)
darcyYe Sep 10, 2024
2626616
fix(experience): allow link social account on sign-in only mode (#6560)
simeng-li Sep 10, 2024
b639249
feat(core): add koa oidc auth for profile API (#6559)
wangsijie Sep 10, 2024
cc346b4
feat(core): password checking api (#6567)
gao-sun Sep 11, 2024
c368c27
refactor: update display, quota guard and usage report logic for ente…
darcyYe Sep 11, 2024
baa851f
fix(console): fix log label typo (#6569)
simeng-li Sep 12, 2024
380cc43
refactor(console,experience): improve RTL support (#6568)
charIeszhao Sep 12, 2024
a6178f4
fix(core): allow no password user to set password in console profile …
charIeszhao Sep 12, 2024
3436020
refactor: use orgsLimit instead of orgsEnabled as org quota key (#6570)
darcyYe Sep 12, 2024
318550c
fix(experience-legacy): add html attribute dir to better support RTL …
charIeszhao Sep 12, 2024
1383aaf
fix(core): avoid duplicate operationId (#6574)
simeng-li Sep 12, 2024
a6402e7
fix: fix enterprise console issues (#6578)
darcyYe Sep 12, 2024
8bb5c81
feat(schemas): add verification record table (#6566)
wangsijie Sep 13, 2024
193b4a4
fix(experience-legacy): update text alignment for RTL support (#6583)
charIeszhao Sep 13, 2024
560cb23
refactor: refactor SkuName component to make isEnterprisePlan as inpu…
darcyYe Sep 13, 2024
cf53bb2
test: add integration test for no password user setting password (#6579)
charIeszhao Sep 13, 2024
6a4726b
test: add ui integration test for lang and dir html attributes in exp…
charIeszhao Sep 13, 2024
d7663db
fix(experience-legacy): flip arrow icons on rtl (#6584)
charIeszhao Sep 13, 2024
5aab7c0
fix(core): add sso only email guard (#6576)
simeng-li Sep 13, 2024
43d83e8
release: version packages (#6424)
silverhand-bot Sep 13, 2024
eee4317
feat(console): au region
gao-sun Sep 18, 2024
3c9b1ea
refactor: catch withtyped errors
gao-sun Sep 18, 2024
8e5127f
Merge pull request #6594 from logto-io/gao-au-region
gao-sun Sep 19, 2024
5ddb64d
style(console): hide button title when loading (#6602)
xiaoyijun Sep 19, 2024
918f850
feat(core): add feature flag switch for experience app (#6564)
simeng-li Sep 20, 2024
c61dd50
fix(experience): add missing button loading state (#6599)
xiaoyijun Sep 20, 2024
72738b2
refactor(console): fix region-related styles (#6606)
gao-sun Sep 20, 2024
a1d0d10
refactor(phrases): sync translation (#6607)
gao-sun Sep 20, 2024
9df5866
refactor(console): fix flag styles (#6610)
gao-sun Sep 20, 2024
1aa5b26
fix(console): fix PlanUsage not displayed for enterprise plan w/o sub…
darcyYe Sep 20, 2024
21a5936
feat(console): hide the entrance of http email connector (#6616)
wangsijie Sep 23, 2024
9adbb31
feat(connector): add http email connector (#6592)
wangsijie Sep 23, 2024
6fddf67
docs(connector): add readme of http email connector (#6603)
wangsijie Sep 23, 2024
a88a1e9
fix(connector): fix http email connector id (#6617)
wangsijie Sep 23, 2024
201cd11
fix(connector): fix readme link in http email (#6618)
wangsijie Sep 24, 2024
4030d3e
fix(connector): add tooltip of authorization header field (#6621)
wangsijie Sep 24, 2024
b73728b
fix(connector): replace smtp logo (#6622)
wangsijie Sep 24, 2024
f8fd52b
fix(console): fix empty string update of connector config form (#6626)
wangsijie Sep 24, 2024
657236a
fix(connector): add type list in readme (#6625)
wangsijie Sep 24, 2024
1b001f8
feat(core): update password in profile (#6571)
wangsijie Sep 24, 2024
b3cac2e
Revert "fix(console): fix empty string update of connector config for…
wangsijie Sep 24, 2024
eccba56
refactor(console): update pricing console page (#6620)
darcyYe Sep 24, 2024
5a52222
fix(console): fix console resource usage tooltip (#6628)
darcyYe Sep 24, 2024
fa6f8ef
fix(console): fix console resource usage tooltip (#6629)
darcyYe Sep 24, 2024
e54baf4
refactor(console): remove subscription plans (#6591)
darcyYe Sep 25, 2024
3c993d5
fix(core,tunnel,phrases): support range requests when hosting custom …
charIeszhao Sep 25, 2024
0c43618
chore: update readme with useful links to documentation and blog (#6615)
michaelgiraldo Sep 25, 2024
ea333b3
chore(core): update code comments in security header middleware (#6634)
charIeszhao Sep 25, 2024
f5b17f3
chore: fix typos in README.md (#6635)
gao-sun Sep 25, 2024
349a6a4
chore: split and add dedicated changeset for tunnel (#6632)
charIeszhao Sep 26, 2024
fc6f94f
refactor(cli): keep alteration scripts folder writable by gid 0 (#6328)
bpow Sep 26, 2024
3131802
feat(core): add update name and avatar endpoint (#6636)
wangsijie Sep 29, 2024
26b9a38
feat(core): update username (#6640)
wangsijie Sep 29, 2024
76acfe3
refactor(console,phrases): improve feature description for rotate ref…
charIeszhao Sep 30, 2024
37b05f9
feat(core): trigger webhook event in profile api (#6641)
wangsijie Oct 1, 2024
9e67f27
fix(core): expose syntax error response (#6646)
simeng-li Oct 8, 2024
e3be97b
feat(core): add and change primary email (#6643)
wangsijie Oct 9, 2024
72a57e2
feat(core): check password policy before changing password (#6649)
wangsijie Oct 9, 2024
3eede78
feat(core): get user profile (#6650)
wangsijie Oct 10, 2024
026f7e4
refactor: align cloud API response type definition (#6665)
darcyYe Oct 10, 2024
a662b19
fix(core): forgot password on the first access of migrated users (#6642)
GeisonPiegas Oct 11, 2024
5570cec
refactor(core): update Cloud API response type definition (#6667)
darcyYe Oct 11, 2024
c6f59cb
chore: fix typo in README.md (#6655)
buchen Oct 12, 2024
4dc1f82
refactor: move has{Reach,Surpass}Limit method to subscription context…
darcyYe Oct 12, 2024
22566e3
feat(schemas): add SAML SSO IdP initated auth config table (#6659)
simeng-li Oct 14, 2024
14a07dc
feat(core,schemas): add sso idp initiated auth config api (#6660)
simeng-li Oct 14, 2024
17c2a79
feat(core): add patch and delete SAML IdP initiated config API (#6662)
simeng-li Oct 14, 2024
d4f7d09
feat(schemas): add IdP initiated SAML SSO sessions table (#6663)
simeng-li Oct 14, 2024
8e63267
feat(core): handle idp initiated saml assertion request (#6666)
simeng-li Oct 14, 2024
436a184
feat(core,schemas): init auth flow for IdP initiated SAML SSO (#6668)
simeng-li Oct 14, 2024
187847b
feat(core): consume IdP initiated session on SSO verification flow (#…
simeng-li Oct 15, 2024
1a93881
fix(deps): update dependency fast-xml-parser to v4.4.1 [security] (#6…
renovate[bot] Oct 15, 2024
ed849ca
feat(core): update other profile data (#6651)
wangsijie Oct 15, 2024
7925dfd
chore(account-elements): setup account elements project (#6683)
xiaoyijun Oct 16, 2024
96d47db
feat(account-elements): add initial account api (#6684)
xiaoyijun Oct 16, 2024
a7db62c
release: @logto/core-kit:2.5.1 and @logto/tunnel:0.2.1 (#6633)
charIeszhao Oct 16, 2024
2c8343a
feat(schemas): add idp-initiated SSO client side callback url columns…
simeng-li Oct 16, 2024
85fb4ce
refactor(core): update idp-initiated auth config management api (#6680)
simeng-li Oct 16, 2024
cfc1b5e
feat(core): add idp-initiated sso client sign-in redirect (#6681)
simeng-li Oct 16, 2024
64d7b6a
feat(console): add idp-initiated sso config page (#6688)
simeng-li Oct 17, 2024
2fb85a2
feat(core): add and change phone (#6682)
wangsijie Oct 17, 2024
6289433
feat(core): add expiresAt in response of verification record creation…
wangsijie Oct 17, 2024
bc2a0ac
feat(core): database connection timeout env overwrite support (#6187)…
luis815 Oct 18, 2024
61aa13f
feat(connector): add gatewayapi connector (#6691)
wangsijie Oct 18, 2024
671be26
refactor(console,core): remove `isAddOnAvailable` (#6689)
darcyYe Oct 21, 2024
2760eda
fix: fix lockfile (#6699)
darcyYe Oct 21, 2024
aab356d
chore: launch au region (#6701)
gao-sun Oct 21, 2024
e3374d0
fix(console): fix enterprise tenants not displayed issue (#6695)
darcyYe Oct 21, 2024
3022d2e
fix(console): manually update tenant data when data get updated (#6697)
darcyYe Oct 21, 2024
d52f251
fix(console): fix inf loop for updating tenant context (#6704)
darcyYe Oct 22, 2024
c7f326e
fix(console): fix webhook modal paywall for enterprise plan (#6698)
darcyYe Oct 22, 2024
14e6592
chore(core): guard idp-initiated sso console and api (#6690)
simeng-li Oct 22, 2024
11055a6
fix(console): add applications and redirect uri placeholder (#6696)
simeng-li Oct 22, 2024
6594c49
chore(deps): update dependency vite to v5.3.6 [security] (#6678)
renovate[bot] Oct 22, 2024
95c7d8b
style(console): update radio card style (#6700)
simeng-li Oct 22, 2024
98bd9bb
refactor: reorg elements project (#6708)
xiaoyijun Oct 22, 2024
27e44c2
feat(elements): introduce basic logto-account-provider (#6685)
xiaoyijun Oct 22, 2024
9177cc2
fix(deps): update dependency http-proxy-middleware to v3.0.3 [securit…
renovate[bot] Oct 23, 2024
83e942a
chore(deps): update dependency mermaid to v10.9.3 [security] (#6716)
renovate[bot] Oct 23, 2024
b906db7
fix(console): fix cloud CI failed issue (#6710)
darcyYe Oct 23, 2024
3a826c4
chore: bump dependency versions (#6712)
simeng-li Oct 23, 2024
8c1ee14
chore(deps): update dependency sinon to v19 (#6596)
renovate[bot] Oct 23, 2024
27a193d
chore(deps): update dependency nock to v14.0.0-beta.15 (#6432)
renovate[bot] Oct 23, 2024
eae1c30
chore: add changeset of gatewayapi connector (#6723)
wangsijie Oct 23, 2024
84af9ee
ci: install playwright for element tests (#6719)
xiaoyijun Oct 23, 2024
5bb9375
chore: add google connector default prompt (#6734)
darcyYe Oct 24, 2024
f2d2804
feat(core,console,schemas): add idp-initiated sso session create log …
simeng-li Oct 24, 2024
2d3295e
fix(console): fix manually update tenant open invoice bug (#6747)
darcyYe Oct 24, 2024
6ef19b3
feat(elements): add logto-username element (#6724)
xiaoyijun Oct 25, 2024
20a714c
feat(elements): add logto-user-email element (#6726)
xiaoyijun Oct 25, 2024
11d9ed4
feat(elements): add logto-user-password element (#6728)
xiaoyijun Oct 25, 2024
af5c6c7
refactor(core): use template type for code verification (#6687)
wangsijie Oct 25, 2024
a72e016
fix(core,console): show custom jwt error logs (#6749)
simeng-li Oct 25, 2024
3d25448
feat(elements): add logto-user-phone element (#6732)
xiaoyijun Oct 25, 2024
8f59a20
feat(elements): add logto-social-identity element (#6736)
xiaoyijun Oct 25, 2024
f48d3a1
release: version packages (#6631)
silverhand-bot Oct 25, 2024
5003136
feat(elements): add logto-account-center element (#6737)
xiaoyijun Oct 25, 2024
9742f05
feat(core): add social identity (#6703)
wangsijie Oct 26, 2024
34f310c
fix(console): remove unused vite-plugin (#6729)
simeng-li Oct 28, 2024
73627a7
chore(deps): update postcss-modules version (#6738)
simeng-li Oct 28, 2024
fa791d3
feat(core): remove social identity (#6709)
wangsijie Oct 28, 2024
76a985c
chore(deps): update tsup dependency version (#6733)
simeng-li Oct 28, 2024
7c7a624
chore(deps): align the d3-color deps version (#6740)
simeng-li Oct 28, 2024
7620479
chore(deps): override braces dependency version (#6735)
simeng-li Oct 28, 2024
60a6d67
feat(core): initial implementation of user set mfa secrets / codes (#…
atarbalouti Oct 29, 2024
5fbcf38
chore: override @75lb/deep-merge package version (#6725)
simeng-li Oct 31, 2024
0c777c1
chore(deps): update dependency @lit/localize-tools to ^0.8.0 (#6402)
renovate[bot] Nov 4, 2024
6698679
fix(core): fix enterprise SSO unknown field not synced issue (#6763)
simeng-li Nov 4, 2024
fe06860
style(experience): update the devTenantNotification style (#6745)
simeng-li Nov 5, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat(connector): add gatewayapi connector (logto-io#6691)
  • Loading branch information
wangsijie authored Oct 18, 2024
commit 61aa13f8a9aeb0f89b7b64177fa88159c908ec58
32 changes: 32 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# GatewayAPI SMS connector

The official Logto connector for GatewayAPI SMS.

## Get started

GatewayAPI is a cloud service provider in Europe, offering many cloud services, including SMS (short message service). GatewayAPI SMS Connector is a plugin provided by the Logto team to call the GatewayAPI SMS service, with the help of which Logto end-users can register and sign in to their Logto account via SMS verification code.

## Set up in GatewayAPI

> 💡 **Tip**
>
> You can skip some sections if you have already finished.

### Create an GatewayAPI account

Go to the [GatewayAPI website](https://www.gatewayapi.com/) and register your GatewayAPI account if you don't have one.

### Enable account

You may need to enable your account before using the SMS service. You can contact the GatewayAPI customer service to enable your account.

### Get API token

Go to the API Keys page from the GatewayAPI console, and find the API token or create a new API token.

## Set up in Logto

1. **Endpoint**: If your GatewayAPI account is in the EU region, you should use the endpoint `https://gatewayapi.com/rest/mtsms`. If your GatewayAPI account is in the US region, you should use the endpoint `https://gatewayapi.com/rest/mtsms`.
2. **API Token**: The API token you created in the previous step.
3. **Sender**: The sender you want to use to send the SMS.
4. **Templates**: The templates you want to use to send the SMS, you can use the default templates or modify them as needed.
1 change: 1 addition & 0 deletions packages/connectors/connector-gatewayapi-sms/logo.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
69 changes: 69 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{
"name": "@logto/connector-gatewayapi-sms",
"version": "0.0.0",
"description": "GatewayAPI SMS connector implementation.",
"author": "Silverhand Inc. <contact@silverhand.io>",
"dependencies": {
"@logto/connector-kit": "workspace:^4.0.0",
"@silverhand/essentials": "^2.9.1",
"got": "^14.0.0",
"snakecase-keys": "^8.0.1",
"zod": "^3.23.8"
},
"main": "./lib/index.js",
"module": "./lib/index.js",
"exports": "./lib/index.js",
"license": "MPL-2.0",
"type": "module",
"files": [
"lib",
"docs",
"logo.svg",
"logo-dark.svg"
],
"scripts": {
"precommit": "lint-staged",
"check": "tsc --noEmit",
"build": "tsup",
"dev": "tsup --watch",
"lint": "eslint --ext .ts src",
"lint:report": "pnpm lint --format json --output-file report.json",
"test": "vitest src",
"test:ci": "pnpm run test --silent --coverage",
"prepublishOnly": "pnpm build"
},
"engines": {
"node": "^20.9.0"
},
"eslintConfig": {
"extends": "@silverhand",
"settings": {
"import/core-modules": [
"@silverhand/essentials",
"got",
"nock",
"snakecase-keys",
"zod"
]
}
},
"prettier": "@silverhand/eslint-config/.prettierrc",
"publishConfig": {
"access": "public"
},
"devDependencies": {
"@silverhand/eslint-config": "6.0.1",
"@silverhand/ts-config": "6.0.0",
"@types/node": "^20.11.20",
"@types/supertest": "^6.0.2",
"@vitest/coverage-v8": "^2.0.0",
"eslint": "^8.56.0",
"lint-staged": "^15.0.2",
"nock": "^13.3.1",
"prettier": "^3.0.0",
"supertest": "^7.0.0",
"tsup": "^8.1.0",
"typescript": "^5.5.3",
"vitest": "^2.0.0"
}
}
70 changes: 70 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/src/constant.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import type { ConnectorMetadata } from '@logto/connector-kit';
import { ConnectorConfigFormItemType } from '@logto/connector-kit';

export const endpoint = 'https://api.twilio.com/2010-04-01/Accounts/{{accountSID}}/Messages.json';

export const defaultMetadata: ConnectorMetadata = {
id: 'gatewayapi-sms',
target: 'gatewayapi-sms',
platform: null,
name: {
en: 'GatewayAPI SMS Service',
},
logo: './logo.svg',
logoDark: null,
description: {
en: 'GatewayAPI accelerates development by removing the learning curve and guesswork, so you can get down to building right away with our APIs.',
},
readme: './README.md',
formItems: [
{
key: 'endpoint',
label: 'Endpoint',
type: ConnectorConfigFormItemType.Text,
required: true,
placeholder: 'https://gatewayapi.com/rest/mtsms',
defaultValue: 'https://gatewayapi.com/rest/mtsms',
},
{
key: 'apiToken',
label: 'API Token',
type: ConnectorConfigFormItemType.Text,
required: true,
},
{
key: 'sender',
label: 'Sender',
type: ConnectorConfigFormItemType.Text,
required: true,
placeholder: 'ExampleSMS',
},
{
key: 'templates',
label: 'Templates',
type: ConnectorConfigFormItemType.Json,
required: true,
defaultValue: [
{
usageType: 'SignIn',
content:
'Your Logto sign-in verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'Register',
content:
'Your Logto sign-up verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'ForgotPassword',
content:
'Your Logto password change verification code is {{code}}. The code will remain active for 10 minutes.',
},
{
usageType: 'Generic',
content:
'Your Logto verification code is {{code}}. The code will remain active for 10 minutes.',
},
],
},
],
};
10 changes: 10 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/src/index.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import createConnector from './index.js';
import { mockedConfig } from './mock.js';

const getConfig = vi.fn().mockResolvedValue(mockedConfig);

describe('GatewayAPI SMS connector', () => {
it('init without throwing errors', async () => {
await expect(createConnector({ getConfig })).resolves.not.toThrow();
});
});
81 changes: 81 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
import { assert } from '@silverhand/essentials';
import { got, HTTPError } from 'got';

import type {
GetConnectorConfig,
SendMessageFunction,
CreateConnector,
SmsConnector,
} from '@logto/connector-kit';
import {
ConnectorError,
ConnectorErrorCodes,
validateConfig,
ConnectorType,
replaceSendMessageHandlebars,
} from '@logto/connector-kit';

import { defaultMetadata } from './constant.js';
import { gatewayApiSmsConfigGuard, type GatewayApiSmsPayload } from './types.js';

const sendMessage =
(getConfig: GetConnectorConfig): SendMessageFunction =>
async (data, inputConfig) => {
const { to, type, payload } = data;
const config = inputConfig ?? (await getConfig(defaultMetadata.id));
validateConfig(config, gatewayApiSmsConfigGuard);
const { endpoint, apiToken, sender, templates } = config;
const template = templates.find((template) => template.usageType === type);

assert(
template,
new ConnectorError(
ConnectorErrorCodes.TemplateNotFound,
`Cannot find template for type: ${type}`
)
);

const encodedAuth = Buffer.from(`${apiToken}:`).toString('base64');
const body: GatewayApiSmsPayload = {
sender,
message: replaceSendMessageHandlebars(template.content, payload),
recipients: [{ msisdn: to }],
};

try {
return await got.post(endpoint, {
headers: {
Authorization: `Basic ${encodedAuth}`,
},
json: body,
});
} catch (error: unknown) {
if (error instanceof HTTPError) {
const {
response: { body: rawBody },
} = error;
assert(
typeof rawBody === 'string',
new ConnectorError(
ConnectorErrorCodes.InvalidResponse,
`Invalid response raw body type: ${typeof rawBody}`
)
);

throw new ConnectorError(ConnectorErrorCodes.General, rawBody);
}

throw error;
}
};

const createGatewayApiSmsConnector: CreateConnector<SmsConnector> = async ({ getConfig }) => {
return {
metadata: defaultMetadata,
type: ConnectorType.Sms,
configGuard: gatewayApiSmsConfigGuard,
sendMessage: sendMessage(getConfig),
};
};

export default createGatewayApiSmsConnector;
17 changes: 17 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/src/mock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { GatewayApiSmsConfig } from './types.js';

const mockedEndpoint = 'https://gatewayapi.com/rest/mtsms';
const mockedApiToken = 'api-token';
const mockedSender = 'sender';

export const mockedConfig: GatewayApiSmsConfig = {
endpoint: mockedEndpoint,
apiToken: mockedApiToken,
sender: mockedSender,
templates: [
{
usageType: 'Generic',
content: 'This is for testing purposes only. Your verification code is {{code}}.',
},
],
};
39 changes: 39 additions & 0 deletions packages/connectors/connector-gatewayapi-sms/src/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { z } from 'zod';

/**
* UsageType here is used to specify the use case of the template, can be either
* 'Register', 'SignIn', 'ForgotPassword', 'Generic'.
*/
const requiredTemplateUsageTypes = ['Register', 'SignIn', 'ForgotPassword', 'Generic'];

const templateGuard = z.object({
usageType: z.string(),
content: z.string(),
});

export const gatewayApiSmsConfigGuard = z.object({
endpoint: z.string(),
apiToken: z.string(),
sender: z.string(),
templates: z.array(templateGuard).refine(
(templates) =>
requiredTemplateUsageTypes.every((requiredType) =>
templates.map((template) => template.usageType).includes(requiredType)
),
(templates) => ({
message: `Template with UsageType (${requiredTemplateUsageTypes
.filter(
(requiredType) => !templates.map((template) => template.usageType).includes(requiredType)
)
.join(', ')}) should be provided!`,
})
),
});

export type GatewayApiSmsConfig = z.infer<typeof gatewayApiSmsConfigGuard>;

export type GatewayApiSmsPayload = {
sender: string;
message: string;
recipients: Array<{ msisdn: string }>;
};
Loading
Loading