2681 Commits

Author SHA1 Message Date
Bereket Engida
47c38dacb2 chore: release v1.2.0 v1.2.0 2025-03-02 00:13:38 +03:00
KinfeMichael Tariku
1cbe4d1049 docs: changelog base og image (#1610) 2025-03-01 23:58:02 +03:00
Bereket Engida
15f769645c docs: add Vercel Analytics 2025-03-01 23:57:20 +03:00
Bereket Engida
bce889b99a docs(changelog): remove back navigation link 2025-03-01 23:54:25 +03:00
KinfeMichael Tariku
d76d621feb docs: v1.2 banner (#1608) 2025-03-01 23:47:34 +03:00
Bereket Engida
fa1de4352e docs(changelog): change release notes og image 2025-03-01 23:26:21 +03:00
Bereket Engida
f2985c269f docs(changelog): Improve mobile and responsive layout for changelog pages 2025-03-01 23:14:19 +03:00
Bereket Engida
958d80fd86 docs(changelog): Update 1.2 release notes 2025-03-01 23:10:03 +03:00
Bereket Engida
51e756e91e docs(landing):update avatar 2025-03-01 22:00:27 +03:00
Bereket Engida
7fba5da426 chore: improve options js docs 2025-03-01 21:30:19 +03:00
Bereket Engida
a5d2673414 feat(organization): Add option to keep current active organization when creating a new one 2025-03-01 21:30:19 +03:00
Bereket Engida
07217636a9 feat(social-providers): Add option to disable default scopes 2025-03-01 21:30:19 +03:00
KinfeMichael Tariku
dde0699a6c docs(fix): import outside of mdx code highlighter (#1605) 2025-03-01 21:18:07 +03:00
Bereket Engida
b6173e2063 chore: release v1.2.0-beta.19 v1.2.0-beta.19 2025-03-01 12:40:03 +03:00
Bereket Engida
5a72778767 chore: remove remarkInclude from docs route processing 2025-03-01 12:29:41 +03:00
Bereket Engida
7783935063 chore: downgrade fumadocs dependencies 2025-03-01 12:17:16 +03:00
Bereket Engida
a3592d9b66 chore: fix fumadocs deps 2025-03-01 12:11:44 +03:00
Bereket Engida
a7d33c4efc chore: add fumadocs UI tailwind preset with dusk theme 2025-03-01 12:02:58 +03:00
Bereket Engida
ac21506b81 chore: remove fumadocs UI tailwind preset 2025-03-01 11:18:21 +03:00
Bereket Engida
5643117240 chore: upgrade fumadocs to latest 2025-03-01 11:13:43 +03:00
Maxwell
8e47f11298 fix(init-cmd): Dependencies do not install if ENVs are skipped (#1603)
* fix(cli): init cmd types

* fix(init): deps do not install if env is skipped

- also made the CLI show which packages it will install

* fix(typecheck): specify tsconfig for declarations

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-03-01 11:03:56 +03:00
Bereket Engida
68e0f46bdb docs: replace oslo with @better-auth/utils 2025-03-01 03:44:07 +03:00
Bereket Engida
1a981ac3fc chore: update docs build script 2025-03-01 03:17:53 +03:00
Bereket Engida
a1ee74591a chore: move to ts next config 2025-03-01 03:10:16 +03:00
Bereket Engida
532b81feab chore: upgrade Next.js to version 15.2.0 2025-03-01 02:55:35 +03:00
Bereket Engida
2b768c9df7 demo: fix type errors 2025-03-01 02:51:53 +03:00
Bereket Engida
f6051b45b8 chore: lint 2025-03-01 02:47:15 +03:00
Bereket Engida
0c7a098e95 fix(organization): improve type inference and session handling 2025-03-01 02:36:52 +03:00
Bereket Engida
17d17deafc chore: update lockfile 2025-03-01 02:24:51 +03:00
Bereket Engida
86cbf70684 docs: v1.2 release notes (#1602) 2025-03-01 02:22:32 +03:00
Bereket Engida
015a43b254 chore: remove post install script 2025-03-01 02:06:17 +03:00
Bereket Engida
cc89632c09 chore: release v1.2.0-beta.18 v1.2.0-beta.18 2025-03-01 02:02:29 +03:00
Bereket Engida
43cae44617 chore: lint 2025-03-01 01:27:18 +03:00
Igor Pawelec
bdf69994d1 fix(organization): respect membershipLimit (#1600)
* added membershipLimit

* fix: failing test and revert unlimited

* feat: add default membership limit of 100 to organization plugin

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-03-01 01:23:06 +03:00
Maxwell
53d090af36 chore: remove static route indicator from doc (#1582) 2025-03-01 01:21:39 +03:00
Bereket Engida
4f56078e4b feat: stripe plugin to handle subscriptions and customers (#1588)
* init

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* feat(stripe): enable subscription support and update pricing plans

* feat(stripe): add Vitest configuration and initial tests for Stripe integration

* feat(stripe): implement setCookieToHeader function and update tests for customer creation and subscription handling

* feat(stripe): add seats support for subscriptions and update related endpoints

* feat(stripe): update schema to include unique referenceId, stripeSubscriptionId, and periodEnd fields

* wip docs

* docs

* docs: imporves

* fix(stripe): update webhook handlers to use correct subscription identification

* refactor(stripe): simplify customer management by storing Stripe customer ID directly on user

* chore(stripe): update package configuration and build setup

- Migrated from tsup to unbuild for build configuration
- Updated package.json with improved export and dependency management
- Added build configuration for better module support
- Removed tsup configuration file

* chore(stripe): update pnpm lockfile dependencies

- Moved `better-auth` from devDependencies to dependencies
- Added `zod` as a direct dependency
- Reorganized package dependencies in the lockfile

* feat(stripe): enhance subscription management and error handling

- Added toast error handling for subscription upgrades in the dashboard
- Updated Stripe price IDs for different plans
- Improved Stripe plugin documentation with beta warning and team subscription details
- Implemented intermediate redirect for checkout success to handle race conditions
- Added support for fetching and updating subscription status after checkout
- Fixed Next.js cookie handling and build configuration

* chore: update snapshot
2025-03-01 01:20:17 +03:00
Khiet Tam Nguyen
e613bf492c docs: added "partitioned: true" for cross-domain (foreign) cookies (#1591) 2025-03-01 01:20:04 +03:00
Bereket Engida
8ec35e01bd feat: add errorURL for custom error pages (#1593)
* refactor: improve OAuth callback error handling

* feat: add optional errorURL configuration for OAuth callback

* feat: enhance OAuth error handling with error description
2025-03-01 01:19:32 +03:00
Benjamin Behringer
d74967c756 feat: passkey plugin with client-side authenticatorAttachment and global authenticatorSelection configuration (#1318)
* feat(passkey): Add authenticator attachment options and global configuration

* docs(passkey: adding documentation for new configuration options

* fix(passkey): omit undefined authenticatorAttachment query param

* fix(passkey): remove commented-out code in passkey documentation

* chore: lint

* update js doc

Co-authored-by: Andrew Patton <andrew@acusti.ca>

* fix(passkey): make query parameter optional and safely access authenticator attachment

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
Co-authored-by: Andrew Patton <andrew@acusti.ca>
2025-03-01 01:12:16 +03:00
Bereket Engida
bfacb8c180 chore: update dependencies and lock file versions 2025-03-01 00:56:07 +03:00
Igor Pawelec
48f99de32c docs: fixed removeMember typo (#1599) 2025-03-01 00:53:38 +03:00
Bereket Engida
695f224696 feat: team support for organization (#1425)
* feat: teams in org

* conditional based expose team endpoint

* mod on adapter

* team org wip

* wip

* dynamic type inference

* add test

* feat: enhance organization adapter with default team creation and member timestamps

* feat: add maximum teams limit and prevent removal of last team

* refactor: remove outdated description from plugins documentation

* feat: add teams functionality with management and schema updates

* merge v1.2

* chore: cleanup

* fix(internal-adapter): safely handle lowercase email conversion

* feat(organization): enhance team and organization management tests and functionality

- Update organization and team tests with more comprehensive scenarios
- Modify team creation, invitation, and removal processes
- Improve access control and role management in organization tests
- Add support for multiple team and member management scenarios

* refactor(better-auth): remove unnecessary type extensions for User and Session

---------

Co-authored-by: Kinfe123 <kinfishtech@gmail.com>
2025-03-01 00:46:31 +03:00
Joel Solano
6ae53a1b2f feat: add disabling email and password signup config (#1428) 2025-03-01 00:33:55 +03:00
Maxwell
c66fdc9129 feat: init Better Auth CLI command (#1427)
* update: init command now can do plugins & DB generation

* fix: revert nextjs auth.ts file

* add: pacakge @clack/prompts for better CLI experience

* update: moved from prompts to clack/prompts

* add: functionality to hide logs coming from `getConfig`

* remove: hide logs functionality

* chore: remove unneeded import

* add: install dependencies feature

* add: functionality to update/install better-auth

* fix: install/upgrade better-auth deps

* add: spinner during version checking

* fix: nextCookies plugin import path

* fix: oidc plugin contents

* update: emoji-ify

* fix: mysql code

* refactor: logging/prompt style

* update: mysql use 1 ENV

* fix: msql, revert back to old code

* fix: mysql connectionUri, again

* fix: missing sqlite env

* fix: added back the plugins multiselect

* update: outro text

* add: ENV generation for `BETTER_AUTH_URL` & `BETTER_AUTH_SECRET`

* update: intro & outro text, plus some ENV default values

* remove: name from cli options

* fix: made index.ts's getPackageInfo not crash the program entirely if ENOENT

* update: prompt to get auth config dir if not auto found

* fix: create auth config file

* add: log to state the new file that's being created

* update: outro text

* fix: unneeded diff display

* add: auth-client creator

* fix: auth-client plugins are now grouped

* fix: auth-client import path bugs

* fix: invalid client plugins

* fix: oneTap client plugin contents

* update: allow getConfig to throw errors instead of logging

* fix: auth config error logging

* WIP: auth client code gen

* chore: linter

* update: now supports auth client generation

* WIP: grouped imports

* remove: functionality to update existing auth code

* add: functionality to update tsconfig

* fix: tsconfig not saving new updated values

* fix: handle missing .env files in init process

* update: made `no env file found` error message use `outro` for better logging experience

* fix: removed `ms` at the end as the `formatMilliseconds` fn already handles that

* update: move ENV code after plugins initialization

* chore: update pnpm lockfile and remove deprecated package note

* chore: lint

---------

Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-03-01 00:33:14 +03:00
Maxwell
b6d18ce16f docs(add): database category (#1315)
* docs: sidebar updated for new category

* fix: icons to use fill version

* add: the rest of the pages for the database category

* update: MySQL done

* update: SQLite done. (and updated MySQL)

* update: PostgreSQL

* update: mssql done

* update: added callout to Kysley docs for each core dialect

* update: other relational databases page

* update: drizzle

* docs(fix): wrong words on drizzle page

* update: mongo docs

* update: prisma done

* update: community adapter page

* update: concept/database to refer to the documentation for each dialect in the docs category

* update: drizzle to mention the schema definitions

---------

Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
2025-03-01 00:32:46 +03:00
Dewin Umana
7fffd8bb90 feat: TikTok social provider (#397)
* feat: add TikTok social provider integration with client key support

* chore: lint

* deleted duplicate typeof

* changing verbose of the parameter clientId to client key

* chore: lint

* test: gracefully handle oauth mock server stop

* test: update generic-oauth test server port from 8080 to 8081

---------

Co-authored-by: Bereket Engida <86073083+Bekacru@users.noreply.github.com>
Co-authored-by: Bereket Engida <bekacru@gmail.com>
2025-02-28 23:52:55 +03:00
Bereket Engida
ddb39df39f test: update generic-oauth test server port from 8080 to 8081 2025-02-28 23:35:15 +03:00
Bereket Engida
859386b3ab test: gracefully handle oauth mock server stop 2025-02-28 23:29:34 +03:00
Kirill
b93f979e70 fix(oidc-provider): add support for plain PKCE code challenge method and default config param allowPlainCodeChallengeMethod (#1584) 2025-02-28 21:46:02 +03:00
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