Commit Graph

849 Commits

Author SHA1 Message Date
Maxwell
ec9edc357a feat: API Key plugin (#1515)
* feat: API-key plugin

* add: `deleteAllExpiredApiKeys` functionality

* fix: fetching sessions from headers

* update: types & create-api-key now checks for min & max expiresIn values

* tests: Started working on tests

* add: features

- added list functionality
- added min & max prefix length
- added min & max name length
- added metadata enable/disable option
- added `disableSessionForAPIKeys` option
- verify API key now checks for expiration & refills
- added regex to check prefix of api key

* fix: create-api-key's expiration using `/` instead of `*`

* update: schema `metadata` transforms invalid values as `null`

* fix: create-api-key metadata should go through transformation

* fix: missing metadata wouldn't have `'null'` as value

* update: error types

* fix: remove console.logs from verify

* fix: rate-limit not working

* fix: rate-limit plugin options types

* chore: remove logs

* update: removed `key` field from result apiKey type of the update-api-key endpoint

* fix: typo

* update: create & update if checks

- create now checks if custom expiration times are allowed
- update now allows name values & checks if name is within length range
- update now also checks for custom expiration times are allowed

* update(WIP): tests

* fix: added the missing error throw when there is no values to update

* fix: update-api-key checks expiresIn in days, not ms

- also updated create-api-key & update-api-key to have more detailed event logging

* fix: update api key's remaining count's min & max checks

- also added more detail to the events

* fix: update-api-key can now update refillInterval & refillAmount properly

* fix: metadata in update-api-key transforms between string & obj correctly

* add: all of the `update` tests

* update: get-api-key metadata is now obj instead of string

* add: listApiKeys functionality

* fix: get-session to use mock session based on header API keys

* update: tests to test against get-session, get-api-key, and list-api-key

* add: `start` field to show the first few characters of an API key

* fix: very silly mistake

* update: tests to validate `start` property

* update: create-api-key checks if properties are set from server & allows for custom rate-limit rules

- also updated tests to check against this

* update: verify-api-key to check if a row has the right user-id

- this also should speed up the DB process too. (I'm pretty sure)

* update: `delete-all-expired-api-keys` endpoint added & updated list-api-keys endpoint function name

* add: customAPIKeyValidator fn, and fixed verification `remaining` and `lastRefillAt` values updating DB incorrectly

* update: documentation

* add: rate-limiting enable/disable on a per-key level

* update: docs

* fix: correct expiration time units and improve error messages in API key handling

* fix: allow creating apiKeys by providing userId on the server

* fix: user userId instead of headers to differ server vs client calls on create api key

* wip

* fix: JSDoc comment

* fix: tests not passing due to invalid expiresIn value

Since the expiresIn got changed from `ms` to `sec`, this needed to be changed as well.

* wip

* fix(api-key): update tests and error messages for API key verification

* fix(api-key): update API key fixes

* refactor tests and remove events

* refactor(api-key): remove unused event handling and clean up type definitions

* add: minimum values to `create-api-key` numeric input options

* fix: remove `opts.events` in delete-api-key route

* refactor: all returning routes which can contain `key`

- more performant
- better typed
- cleaner code

:D

* update: added minimum values to update-api-key endpoint as well

* fix: removed `maximumRemaining` & `minimumRemaining` default values in `opts`

* docs: ready (unless I make minor adjustments later) 🫡

* fix(docs): links & invalid code examples

* fix: output transform of metadata to use ParseJSON

* fix: tests failing due to async metadata transform output

* fix: return types for verify-api-key endpoint

* fix: tests failing due to invalid expiresIn minimum value

* docs: reorder sidebar items for API Key

* wip

* docs(api-key): enhance documentation with permissions and usage details

- Updated API key documentation with comprehensive permissions explanation
- Added examples for setting default permissions, creating, verifying, and updating API keys with permissions
- Clarified API key creation, verification, and update processes
- Improved code examples and descriptions for better understanding

* chore: lint

* fix(docs): incorrect wording / explanation on refillInterval/refillAmount

* add(docs): missing permissions info in docs

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-02-28 17:11:03 +03:00
Bereket Engida
c50be9d086 chore(deps): update @better-fetch/fetch to v1.1.15 across projects 2025-02-27 18:28:37 +03:00
Bereket Engida
3a4182bbdd chore: lint 2025-02-27 18:22:29 +03:00
Bereket Engida
7ba1af2ff9 Merge branch 'main' into v1.2 2025-02-27 14:20:23 +03:00
Bereket Engida
4c8aff3489 chore: configure server-side external packages and increase build memory limit 2025-02-26 00:38:01 +03:00
Bereket Engida
76bd9e8c0b chore(deps): upgrade fumadocs and related packages 2025-02-26 00:30:31 +03:00
Bereket Engida
dbfb050b4c chore(deps): bump zod to v3.24.2 2025-02-25 23:38:20 +03:00
Bereket Engida
c488e306ea docs: add llms.txt 2025-02-25 22:35:30 +03:00
Krishna Santosh
2c81dcab7c docs(fix): add missing word 'change' (#1572) 2025-02-25 16:27:33 +03:00
Bereket Engida
1a3aff29a7 feat(client): add basePath option on createAuthClient (#1571)
* chore(dependencies): update @better-fetch/fetch to 1.1.15

* feat(client): add basePath option
2025-02-25 10:38:57 +03:00
Maxwell
cdedfd2582 docs: add author avatar on community plugins (#1565) 2025-02-24 22:23:44 +03:00
Bereket Engida
c410f6dae0 Merge branch 'main' into v1.2 2025-02-24 14:55:44 +03:00
Bereket Engida
89020e058c Merge branch 'main' into v1.2 2025-02-24 11:41:29 +03:00
Zohaib Akber
84dc11bb3e docs(fix): session secondary storage value for redis (#1359) 2025-02-24 08:10:11 +03:00
Bereket Engida
3009797045 chore(docs): fix syntax error on code example 2025-02-24 08:09:44 +03:00
Wolfgang Rathgeb
8ba7a9ceae feat(email-otp): add option to set a function to generate OTPs (#1472)
* add option to create a otp

* add description

* use tabs instead of spaces

* rename create to generate and replace all uses fo generateRandomString

* remove length

* fix type in forgot-password

* add generateOTP option and tests for email OTP functionality

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-02-24 08:02:04 +03:00
Jan
5a537c5408 docs: added missing column in 2fa plugin schema (#1552)
* Added missing column in 2fa plugin schema documentation

* Formatting
2025-02-24 00:34:29 +03:00
Kamil Kisiela
6c67ea1112 feat(sso): sign in using the providerId (#1533) 2025-02-24 00:13:01 +03:00
Joel Solano
612120cc24 feat: add access control to admin plugin (#1424)
* feat: add custom roles

* chore: remove unused import

* docs: add access control to admin plugin

* feat: add custom roles

* fix: update formatting to fix lint error

* fix: small fixes/optimizations

* fix: linting

* feat: make ready for v1.2

* fix: linting

* fix: remove incorrect negation in success check

* docs: update incorrect function and variable names

* fix: resolved merge conflicts

* fix: merge conflicts

* fix: linting

* refactor: make role field optional again

* refactor(access): improve auth logic and add tests for access control

* chore: fix linting

* refactor(admin): enhance access control types and improve admin client functionality

* chore: fix types

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-02-24 00:06:06 +03:00
Maxwell
c7ed3b5565 docs(fix); sessionMiddleware import path in plugins docs (#1544)
Thanks @perkinsjr !
2025-02-23 09:18:41 +03:00
Hussein Raji
df50012a76 docs: fix correct "set password" code snippet (#1537) 2025-02-23 09:18:41 +03:00
Maxwell
8fb25bdd6a docs(rename): node to express in integration docs (#1535) 2025-02-23 09:18:41 +03:00
Hussein Raji
d8173f383b docs: fix typo (#1529) 2025-02-23 09:18:41 +03:00
SaltyAom
722cb22769 doc(elysia): using mount and macro to simplify code (#1531) 2025-02-23 09:18:40 +03:00
Maxwell
e7b2d8177d docs(fix); sessionMiddleware import path in plugins docs (#1544)
Thanks @perkinsjr !
2025-02-23 08:46:47 +03:00
Hussein Raji
450c42680e docs: fix correct "set password" code snippet (#1537) 2025-02-22 20:10:17 +03:00
Maxwell
97911b4da1 docs(rename): node to express in integration docs (#1535) 2025-02-22 20:09:45 +03:00
Bereket Engida
68d33293b2 Merge branch 'v1.2' of https://github.com/better-auth/better-auth into v1.2 2025-02-22 20:07:02 +03:00
Bereket Engida
1a0d5e21f5 Merge branch 'main' into v1.2 2025-02-22 20:06:23 +03:00
Rahul Mishra
56b0465e4e docs: update getSessionCookie import in demo and docs (#1534) 2025-02-22 10:28:46 +03:00
Hussein Raji
7230ca9069 docs: fix typo (#1529) 2025-02-22 00:45:07 +03:00
SaltyAom
eba3fc919f doc(elysia): using mount and macro to simplify code (#1531) 2025-02-21 21:18:11 +03:00
Rahul Mishra
419a86a773 chore: fix type exports and sync dep versions to improve build times (#1528) 2025-02-21 16:26:50 +03:00
Bereket Engida
5d529f0189 docs(landing): add testimonial from Theo 2025-02-21 12:00:21 +03:00
Bereket Engida
0208d09012 docs(landing): update testimonials 2025-02-21 11:52:47 +03:00
Bereket Engida
5e4b8ef0df docs(landing): update testimonials 2025-02-21 11:31:36 +03:00
Bereket Engida
745c9f35b4 docs: update testimonials 2025-02-21 11:28:17 +03:00
Bereket Engida
c3168d0dc0 docs(landing): update avatar image for testimonial 2025-02-21 11:09:59 +03:00
Bereket Engida
cccb6fbaa3 Merge branch 'main' into v1.2 2025-02-21 01:20:54 +03:00
Bereket Engida
848b47f567 chore:lint 2025-02-20 23:27:17 +03:00
Pratiyank Kumar
9b02e0aae2 demo: fix React prop spreading warnings in CodeEditor component (#1321) 2025-02-20 22:43:34 +03:00
josselinonduty
a50950d487 docs: fix headers api example for nitro (#1307) 2025-02-20 22:38:35 +03:00
Thomas Lekanger
b9c01f3c49 docs: fix typo (#1517)
genericOAuth plugin uses ``scopes`` not ``scope``
2025-02-20 22:35:07 +03:00
Gordon Ta
6c28ad3e9b docs: improve cross subdomain cookies docs (#1324)
docs/concepts/cookies:
- updated the `Cross Subdomain Cookies` section  with missing details and additional information to make subdomain cookies work

docs/reference/security:
- updated the `Cookies` section with corrected attribute and option names
2025-02-20 22:02:32 +03:00
Adam El Taha
b56f6da8e2 docs: remove unneeded import from JWT docs (#1344) 2025-02-20 21:59:25 +03:00
Hussein Raji
a718cf5b04 docs: fix typo (#1514)
Correct error handling example snippet for sign in without email verification
2025-02-20 21:51:18 +03:00
Hussein Raji
830d5c075a docs: update custom session example (#1508) 2025-02-20 09:26:33 +03:00
Bereket Engida
6ff11bd5ae Merge branch 'main' into v1.2 2025-02-20 09:25:05 +03:00
Bereket Engida
883c5a9f0e Merge branch 'main' into v1.2 2025-02-20 09:22:45 +03:00
Pukima
91bc0b74d7 docs: fix typo in node integration intro (#1503) 2025-02-19 19:29:41 +03:00