@sanoma-ai/connector-better-auth 0.2.2 → 0.2.3
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/README.md +22 -10
- package/dist/login.d.ts +7 -6
- package/dist/login.js +30 -25
- package/dist/login.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @sanoma-ai/connector-better-auth
|
|
2
2
|
|
|
3
|
-
[Better Auth](https://www.better-auth.com) as a visitor login for a [Sanoma](https://github.com/Sanoma-AI/sanoma) public site, and as the app's staff sign-in on a host: visitors sign up and sign in with an email and a password
|
|
3
|
+
[Better Auth](https://www.better-auth.com) as a visitor login for a [Sanoma](https://github.com/Sanoma-AI/sanoma) public site, and as the app's staff sign-in on a host: visitors sign up and sign in with an email and a password, an email code or GitHub, staff by an email code, an invite link or GitHub, and the accounts live on the company's own database. It has no operations and no credential; it attaches a login half (`withSetup({ login })`, see [`@sanoma-ai/workflows`](https://www.npmjs.com/package/@sanoma-ai/workflows#usage)), which the app calls once for each public site that names it.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
@@ -66,25 +66,37 @@ When the company's config names a sender (`login: { sender: resend.emails.send,
|
|
|
66
66
|
|
|
67
67
|
### GitHub
|
|
68
68
|
|
|
69
|
-
When the app has the company's GitHub App client (`SANOMA_GITHUB_CLIENT_ID` and `SANOMA_GITHUB_CLIENT_SECRET`, which `sanoma` reads on a host, the staff login's too), the login offers GitHub (`methods` lists `"github"`): a visitor signed in links their GitHub account, and is then said to be that GitHub login (`ctx.startedBy.github` in a run they start, `user.github` in the session). Add `https://<site host>/auth/better-auth/callback/github` to the App's callback URLs (its settings, "Callback URL"), one for each site's host.
|
|
69
|
+
When the app has the company's GitHub App client (`SANOMA_GITHUB_CLIENT_ID` and `SANOMA_GITHUB_CLIENT_SECRET`, which `sanoma` reads on a host, the staff login's too), the login offers GitHub (`methods` lists `"github"`): a visitor signs up or in with GitHub ("Continue with GitHub", beside the email code), or, signed in, links their GitHub account, and is then said to be that GitHub login (`ctx.startedBy.github` in a run they start, `user.github` in the session). Add `https://<site host>/auth/better-auth/callback/github` to the App's callback URLs (its settings, "Callback URL"), one for each site's host; signing in and linking come back to the same one.
|
|
70
70
|
|
|
71
|
-
| Route | Body | What it does
|
|
72
|
-
| --------------------------------------- | ------------------------------------- |
|
|
73
|
-
| `POST /auth/better-auth/
|
|
74
|
-
| `POST /auth/better-auth/
|
|
75
|
-
| `GET /auth/better-auth/get-session` | | `{ session, user }`, `user.github` the
|
|
71
|
+
| Route | Body | What it does |
|
|
72
|
+
| --------------------------------------- | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `POST /auth/better-auth/sign-in/social` | `{ provider: "github", callbackURL }` | Answers `{ url, redirect: true }`, GitHub's authorize page to send the browser to; back at `/callback/github`, it signs the visitor in (making the account on first use), then `callbackURL`. |
|
|
74
|
+
| `POST /auth/better-auth/link-social` | `{ provider: "github", callbackURL }` | The same, signed in: links the GitHub account to the visitor's, then `callbackURL`. |
|
|
75
|
+
| `GET /auth/better-auth/get-session` | | `{ session, user }`, `user.github` the GitHub login, or null when signed out. |
|
|
76
76
|
|
|
77
77
|
```ts
|
|
78
|
-
|
|
78
|
+
// "Continue with GitHub" on the sign-in page, when the login offers it
|
|
79
|
+
const response = await fetch("/auth/better-auth/sign-in/social", {
|
|
79
80
|
method: "POST",
|
|
80
81
|
headers: { "content-type": "application/json" },
|
|
81
82
|
body: JSON.stringify({ provider: "github", callbackURL: location.pathname }),
|
|
82
83
|
});
|
|
83
84
|
const { url } = await response.json();
|
|
84
|
-
window.location.assign(url); // GitHub, then back on this page
|
|
85
|
+
window.location.assign(url); // GitHub, then back on this page signed in
|
|
85
86
|
```
|
|
86
87
|
|
|
87
|
-
Each `callbackURL` (and `errorCallbackURL`, where an error goes as `?error=<code
|
|
88
|
+
Each `callbackURL` (and `errorCallbackURL`, where an error goes as `?error=<code>`, and `newUserCallbackURL`, where a new account goes) is a path on the site's host.
|
|
89
|
+
|
|
90
|
+
- **One person, one account.** A GitHub sign-in whose email matches a visitor's account signs into that account when GitHub verified the email and the account's own is verified (by a code, or by GitHub at sign-up); otherwise it is refused, so an email nobody proved never joins someone's account.
|
|
91
|
+
- **A new account by GitHub** has its email verified only when GitHub verified it, and `verify` says the email only then. An email code to that address later proves it, and drops the GitHub account that had not.
|
|
92
|
+
- **A link** may use a GitHub account of another email, which GitHub must have verified.
|
|
93
|
+
- **The login** is GitHub's answer for the account's own token at each sign-in or link (Better Auth sets no field a person may not set from a provider's profile), and is cleared when the visitor unlinks it (`POST /unlink-account { accountId }`, the account's id in `GET /list-accounts`). The account's tokens are dropped then, as a GitHub App's user token reaches what the App and the person both reach.
|
|
94
|
+
|
|
95
|
+
| `?error=` | When |
|
|
96
|
+
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- |
|
|
97
|
+
| `account_not_linked` | A sign-in's email matches an account, but one side has not verified it. |
|
|
98
|
+
| `account_already_linked_to_different_user` | A link of a GitHub account that is another visitor's. |
|
|
99
|
+
| `unable_to_link_account` | A second GitHub account for a visitor who has one (by link or by sign-in), or a link whose GitHub email GitHub has not verified. |
|
|
88
100
|
|
|
89
101
|
## The staff sign-in
|
|
90
102
|
|
package/dist/login.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ import type { LoginContext, LoginHalf } from "@sanoma-ai/workflows";
|
|
|
2
2
|
/**
|
|
3
3
|
* Better Auth's login half for one public site: email and password, and an email code when the
|
|
4
4
|
* app can send one (`context.sendCode`); every email may sign up. With the company's GitHub client
|
|
5
|
-
* (`context.social.github`), a visitor
|
|
6
|
-
*
|
|
7
|
-
* login (`verify`'s `github`). Its tables are in schema
|
|
8
|
-
* migrated here before the first site starts, its
|
|
9
|
-
* (`context.key`). The site's origins are its allowed
|
|
10
|
-
* refused) and set the cookie's `Secure` flag: an `https`
|
|
5
|
+
* (`context.social.github`), a visitor also signs up and in with GitHub (`/sign-in/social`, which
|
|
6
|
+
* joins the account of GitHub's verified email), or links it once signed in (`/link-social`), and
|
|
7
|
+
* is then said to be that GitHub login (`verify`'s `github`). Its tables are in schema
|
|
8
|
+
* `better_auth` on the company's database, migrated here before the first site starts, its
|
|
9
|
+
* cookies signed with the app's key for it (`context.key`). The site's origins are its allowed
|
|
10
|
+
* hosts (a request for another host is refused) and set the cookie's `Secure` flag: an `https`
|
|
11
|
+
* origin's is.
|
|
11
12
|
*/
|
|
12
13
|
export declare function betterAuthLogin({ databaseUrl, key, origins, sendCode, social, }: LoginContext): Promise<LoginHalf>;
|
package/dist/login.js
CHANGED
|
@@ -8,12 +8,13 @@ const SIGN_OUT = `${BASE_PATH}/sign-out`;
|
|
|
8
8
|
/**
|
|
9
9
|
* Better Auth's login half for one public site: email and password, and an email code when the
|
|
10
10
|
* app can send one (`context.sendCode`); every email may sign up. With the company's GitHub client
|
|
11
|
-
* (`context.social.github`), a visitor
|
|
12
|
-
*
|
|
13
|
-
* login (`verify`'s `github`). Its tables are in schema
|
|
14
|
-
* migrated here before the first site starts, its
|
|
15
|
-
* (`context.key`). The site's origins are its allowed
|
|
16
|
-
* refused) and set the cookie's `Secure` flag: an `https`
|
|
11
|
+
* (`context.social.github`), a visitor also signs up and in with GitHub (`/sign-in/social`, which
|
|
12
|
+
* joins the account of GitHub's verified email), or links it once signed in (`/link-social`), and
|
|
13
|
+
* is then said to be that GitHub login (`verify`'s `github`). Its tables are in schema
|
|
14
|
+
* `better_auth` on the company's database, migrated here before the first site starts, its
|
|
15
|
+
* cookies signed with the app's key for it (`context.key`). The site's origins are its allowed
|
|
16
|
+
* hosts (a request for another host is refused) and set the cookie's `Secure` flag: an `https`
|
|
17
|
+
* origin's is.
|
|
17
18
|
*/
|
|
18
19
|
export async function betterAuthLogin({ databaseUrl, key, origins, sendCode, social, }) {
|
|
19
20
|
const github = social?.github;
|
|
@@ -32,14 +33,11 @@ export async function betterAuthLogin({ databaseUrl, key, origins, sendCode, soc
|
|
|
32
33
|
plugins: sendCode ? [emailCode(sendCode)] : [],
|
|
33
34
|
user: { additionalFields: GITHUB_FIELD },
|
|
34
35
|
...(github && {
|
|
35
|
-
|
|
36
|
-
//
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
},
|
|
40
|
-
// A visitor's GitHub email is seldom the one they signed in with. Linking still needs
|
|
41
|
-
// GitHub to have verified its email (GitHub is no trusted provider).
|
|
42
|
-
account: { accountLinking: { allowDifferentEmails: true, disableImplicitLinking: true } },
|
|
36
|
+
socialProviders: { github: { clientId: github.clientId, clientSecret: github.clientSecret } },
|
|
37
|
+
// GitHub stays untrusted, and the account's own email must be verified (Better Auth's
|
|
38
|
+
// default, pinned): a sign-in joins an account only by an email both sides verified
|
|
39
|
+
// (AGENTS.md). A link's may differ.
|
|
40
|
+
account: { accountLinking: { allowDifferentEmails: true, requireLocalEmailVerified: true } },
|
|
43
41
|
databaseHooks: {
|
|
44
42
|
account: {
|
|
45
43
|
create: { before: oneGitHub, after: noteLogin },
|
|
@@ -99,23 +97,30 @@ async function oneGitHub(account, ctx) {
|
|
|
99
97
|
return false;
|
|
100
98
|
}
|
|
101
99
|
/**
|
|
102
|
-
* Keeps a GitHub account's login on its user, once Better Auth has linked
|
|
100
|
+
* Keeps a GitHub account's login on its user, once Better Auth has made, linked or signed its user
|
|
103
101
|
* in with it (GitHub's redirect back, `/callback/:id`), then drops the account's tokens, which
|
|
104
102
|
* nothing here uses again: a GitHub App's user token reaches what the App and the person both
|
|
105
|
-
* reach. The
|
|
106
|
-
*
|
|
103
|
+
* reach. The tokens go even when GitHub does not answer: the hook runs once the account is
|
|
104
|
+
* written, so its error undoes nothing. The login is GitHub's `/user` for that token, since
|
|
105
|
+
* Better Auth sets no field from a profile that a person may not set (`input: false`), the GitHub
|
|
106
|
+
* login among them.
|
|
107
107
|
*/
|
|
108
108
|
async function noteLogin(account, ctx) {
|
|
109
109
|
if (account?.providerId !== "github" || !account.accessToken || ctx?.path !== "/callback/:id")
|
|
110
110
|
return;
|
|
111
|
-
const { internalAdapter
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
111
|
+
const { internalAdapter } = ctx.context;
|
|
112
|
+
try {
|
|
113
|
+
const answer = await fetch("https://api.github.com/user", {
|
|
114
|
+
headers: { authorization: `Bearer ${account.accessToken}`, "user-agent": "sanoma" },
|
|
115
|
+
});
|
|
116
|
+
const { login } = (answer.ok ? await answer.json() : {});
|
|
117
|
+
if (typeof login !== "string")
|
|
118
|
+
throw new Error("better-auth: GitHub did not say whose account it is");
|
|
119
|
+
await internalAdapter.updateUser(account.userId, { github: login });
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
await internalAdapter.updateAccount(account.id, { accessToken: null, refreshToken: null, idToken: null });
|
|
123
|
+
}
|
|
119
124
|
}
|
|
120
125
|
/** A GitHub account unlinked: its user is no longer that login. */
|
|
121
126
|
async function forgetLogin(account, ctx) {
|
package/dist/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EAGd,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,yHAAyH;AACzH,MAAM,MAAM,GAAG,aAAa,CAAC;AAC7B,wHAAwH;AACxH,MAAM,SAAS,GAAG,mBAAmB,CAAC;AACtC,MAAM,QAAQ,GAAG,GAAG,SAAS,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sanoma-ai/connector-better-auth",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"description": "Better Auth for Sanoma: the visitor login of public sites (email and password, or an email code) and the staff sign-in on a host (email code, invite links, GitHub), on the company's own database",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"auth",
|
|
@@ -44,13 +44,13 @@
|
|
|
44
44
|
"pg": "^8.23.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@sanoma-ai/app": "0.10.
|
|
48
|
-
"@sanoma-ai/testing": "0.1.
|
|
49
|
-
"@sanoma-ai/workflows": "0.11.
|
|
47
|
+
"@sanoma-ai/app": "0.10.8",
|
|
48
|
+
"@sanoma-ai/testing": "0.1.1",
|
|
49
|
+
"@sanoma-ai/workflows": "0.11.4",
|
|
50
50
|
"@types/pg": "^8.23.1"
|
|
51
51
|
},
|
|
52
52
|
"peerDependencies": {
|
|
53
|
-
"@sanoma-ai/workflows": "^0.11.
|
|
53
|
+
"@sanoma-ai/workflows": "^0.11.4"
|
|
54
54
|
},
|
|
55
55
|
"engines": {
|
|
56
56
|
"node": ">=26"
|